tport.hh revision 8922
12914Ssaidi@eecs.umich.edu/* 28856Sandreas.hansson@arm.com * Copyright (c) 2012 ARM Limited 38856Sandreas.hansson@arm.com * All rights reserved. 48856Sandreas.hansson@arm.com * 58856Sandreas.hansson@arm.com * The license below extends only to copyright in the software and shall 68856Sandreas.hansson@arm.com * not be construed as granting a license to any other intellectual 78856Sandreas.hansson@arm.com * property including but not limited to intellectual property relating 88856Sandreas.hansson@arm.com * to a hardware implementation of the functionality of the software 98856Sandreas.hansson@arm.com * licensed hereunder. You may use the software subject to the license 108856Sandreas.hansson@arm.com * terms below provided that you ensure that this notice is replicated 118856Sandreas.hansson@arm.com * unmodified and in its entirety in all distributions of the software, 128856Sandreas.hansson@arm.com * modified or unmodified, in source code or in binary form. 138856Sandreas.hansson@arm.com * 142914Ssaidi@eecs.umich.edu * Copyright (c) 2006 The Regents of The University of Michigan 152914Ssaidi@eecs.umich.edu * All rights reserved. 162914Ssaidi@eecs.umich.edu * 172914Ssaidi@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 182914Ssaidi@eecs.umich.edu * modification, are permitted provided that the following conditions are 192914Ssaidi@eecs.umich.edu * met: redistributions of source code must retain the above copyright 202914Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 212914Ssaidi@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 222914Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 232914Ssaidi@eecs.umich.edu * documentation and/or other materials provided with the distribution; 242914Ssaidi@eecs.umich.edu * neither the name of the copyright holders nor the names of its 252914Ssaidi@eecs.umich.edu * contributors may be used to endorse or promote products derived from 262914Ssaidi@eecs.umich.edu * this software without specific prior written permission. 272914Ssaidi@eecs.umich.edu * 282914Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 292914Ssaidi@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 302914Ssaidi@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 312914Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 322914Ssaidi@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 332914Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 342914Ssaidi@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 352914Ssaidi@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 362914Ssaidi@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 372914Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 382914Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 392914Ssaidi@eecs.umich.edu * 402914Ssaidi@eecs.umich.edu * Authors: Ali Saidi 418856Sandreas.hansson@arm.com * Andreas Hansson 422914Ssaidi@eecs.umich.edu */ 432914Ssaidi@eecs.umich.edu 443091Sstever@eecs.umich.edu#ifndef __MEM_TPORT_HH__ 453091Sstever@eecs.umich.edu#define __MEM_TPORT_HH__ 463091Sstever@eecs.umich.edu 472914Ssaidi@eecs.umich.edu/** 482914Ssaidi@eecs.umich.edu * @file 493091Sstever@eecs.umich.edu * 503091Sstever@eecs.umich.edu * Declaration of SimpleTimingPort. 512914Ssaidi@eecs.umich.edu */ 522914Ssaidi@eecs.umich.edu 538914Sandreas.hansson@arm.com#include "mem/qport.hh" 542914Ssaidi@eecs.umich.edu 553091Sstever@eecs.umich.edu/** 568914Sandreas.hansson@arm.com * The simple timing port uses a queued port to implement 578914Sandreas.hansson@arm.com * recvFunctional and recvTiming through recvAtomic. It is always a 588914Sandreas.hansson@arm.com * slave port. 593091Sstever@eecs.umich.edu */ 608922Swilliam.wang@arm.comclass SimpleTimingPort : public QueuedSlavePort 612914Ssaidi@eecs.umich.edu{ 628914Sandreas.hansson@arm.com 632914Ssaidi@eecs.umich.edu protected: 644490Sstever@eecs.umich.edu 658914Sandreas.hansson@arm.com /** The packet queue used to store outgoing responses. */ 668914Sandreas.hansson@arm.com PacketQueue queue; 672914Ssaidi@eecs.umich.edu 683091Sstever@eecs.umich.edu /** Implemented using recvAtomic(). */ 693349Sbinkertn@umich.edu void recvFunctional(PacketPtr pkt); 703091Sstever@eecs.umich.edu 713091Sstever@eecs.umich.edu /** Implemented using recvAtomic(). */ 723349Sbinkertn@umich.edu bool recvTiming(PacketPtr pkt); 733091Sstever@eecs.umich.edu 748914Sandreas.hansson@arm.com virtual Tick recvAtomic(PacketPtr pkt) = 0; 753091Sstever@eecs.umich.edu 762914Ssaidi@eecs.umich.edu public: 774490Sstever@eecs.umich.edu 788914Sandreas.hansson@arm.com /** 798914Sandreas.hansson@arm.com * Create a new SimpleTimingPort that relies on a packet queue to 808914Sandreas.hansson@arm.com * hold responses, and implements recvTiming and recvFunctional 818914Sandreas.hansson@arm.com * through calls to recvAtomic. Once a request arrives, it is 828914Sandreas.hansson@arm.com * passed to recvAtomic, and in the case of a timing access any 838914Sandreas.hansson@arm.com * response is scheduled to be sent after the delay of the atomic 848914Sandreas.hansson@arm.com * operation. 858914Sandreas.hansson@arm.com * 868914Sandreas.hansson@arm.com * @param name port name 878914Sandreas.hansson@arm.com * @param owner structural owner 888914Sandreas.hansson@arm.com */ 898914Sandreas.hansson@arm.com SimpleTimingPort(const std::string& name, MemObject* owner); 908856Sandreas.hansson@arm.com 918914Sandreas.hansson@arm.com virtual ~SimpleTimingPort() { } 928914Sandreas.hansson@arm.com 932914Ssaidi@eecs.umich.edu}; 942914Ssaidi@eecs.umich.edu 952914Ssaidi@eecs.umich.edu#endif // __MEM_TPORT_HH__ 96