summaryrefslogtreecommitdiff
path: root/src/mem/timing_protocol.hh
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2019-08-16 13:21:56 -0700
committerGabe Black <gabeblack@google.com>2019-08-23 21:13:33 +0000
commit41f38a559b6b6ed50d821f16b742575d1487d1cf (patch)
tree3535860ac5b519478bcaf753084fa06b091f39b0 /src/mem/timing_protocol.hh
parentc08351f4d399f56ec6ed6c81b39e52f55a7bc56f (diff)
downloadgem5-41f38a559b6b6ed50d821f16b742575d1487d1cf.tar.xz
mem: Put gem5 protocols in their own directory.
This reduces clutter in the src/mem directory, and makes it clear that those protocols are for the classic gem5 memory system, not ruby, TLM, etc. Change-Id: I6cf6b21134d82f4f01991e4fe92dbea8c7e82081 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20231 Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Gabe Black <gabeblack@google.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/mem/timing_protocol.hh')
-rw-r--r--src/mem/timing_protocol.hh190
1 files changed, 0 insertions, 190 deletions
diff --git a/src/mem/timing_protocol.hh b/src/mem/timing_protocol.hh
deleted file mode 100644
index 42235732c..000000000
--- a/src/mem/timing_protocol.hh
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2011-2012,2015,2017 ARM Limited
- * All rights reserved
- *
- * The license below extends only to copyright in the software and shall
- * not be construed as granting a license to any other intellectual
- * property including but not limited to intellectual property relating
- * to a hardware implementation of the functionality of the software
- * licensed hereunder. You may use the software subject to the license
- * terms below provided that you ensure that this notice is replicated
- * unmodified and in its entirety in all distributions of the software,
- * modified or unmodified, in source code or in binary form.
- *
- * Copyright (c) 2002-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Ron Dreslinski
- * Andreas Hansson
- * William Wang
- */
-
-#ifndef __MEM_TIMING_PROTOCOL_HH__
-#define __MEM_TIMING_PROTOCOL_HH__
-
-#include "mem/packet.hh"
-
-class TimingResponseProtocol;
-
-class TimingRequestProtocol
-{
- friend class TimingResponseProtocol;
-
- protected:
- /**
- * Attempt to send a timing request to the peer by calling
- * its corresponding receive function. If the send does not
- * succeed, as indicated by the return value, then the sender must
- * wait for a recvReqRetry at which point it can re-issue a
- * sendTimingReq.
- *
- * @param peer Peer to send packet to.
- * @param pkt Packet to send.
- *
- * @return If the send was succesful or not.
- */
- bool sendReq(TimingResponseProtocol *peer, PacketPtr pkt);
-
- /**
- * Check if the peer can handle a timing request.
- *
- * If the send cannot be handled at the moment, as indicated by
- * the return value, then the sender will receive a recvReqRetry
- * at which point it can re-issue a sendTimingReq.
- *
- * @param peer Peer to send packet to.
- * @param pkt Packet to send.
- *
- * @return If the send was succesful or not.
- */
- bool trySend(TimingResponseProtocol *peer, PacketPtr pkt) const;
-
- /**
- * Attempt to send a timing snoop response packet to it's peer
- * by calling its corresponding receive function. If the send
- * does not succeed, as indicated by the return value, then the
- * sender must wait for a recvRetrySnoop at which point it can
- * re-issue a sendTimingSnoopResp.
- *
- * @param pkt Packet to send.
- */
- bool sendSnoopResp(TimingResponseProtocol *peer, PacketPtr pkt);
-
- /**
- * Send a retry to the peer that previously attempted a
- * sendTimingResp to this protocol and failed.
- */
- void sendRetryResp(TimingResponseProtocol *peer);
-
- /**
- * Receive a timing response from the peer.
- */
- virtual bool recvTimingResp(PacketPtr pkt) = 0;
-
- /**
- * Receive a timing snoop request from the peer.
- */
- virtual void recvTimingSnoopReq(PacketPtr pkt) = 0;
-
- /**
- * Called by the peer if sendTimingReq was called on this peer (causing
- * recvTimingReq to be called on the peer) and was unsuccessful.
- */
- virtual void recvReqRetry() = 0;
-
- /**
- * Called by the peer if sendTimingSnoopResp was called on this
- * protocol (causing recvTimingSnoopResp to be called on the peer)
- * and was unsuccessful.
- */
- virtual void recvRetrySnoopResp() = 0;
-};
-
-class TimingResponseProtocol
-{
- friend class TimingRequestProtocol;
-
- protected:
- /**
- * Attempt to send a timing response to the peer by calling
- * its corresponding receive function. If the send does not
- * succeed, as indicated by the return value, then the sender must
- * wait for a recvRespRetry at which point it can re-issue a
- * sendTimingResp.
- *
- * @param peer Peer to send the packet to.
- * @param pkt Packet to send.
- *
- * @return If the send was succesful or not.
- */
- bool sendResp(TimingRequestProtocol *peer, PacketPtr pkt);
-
- /**
- * Attempt to send a timing snoop request packet to the peer
- * by calling its corresponding receive function. Snoop requests
- * always succeed and hence no return value is needed.
- *
- * @param peer Peer to send the packet to.
- * @param pkt Packet to send.
- */
- void sendSnoopReq(TimingRequestProtocol *peer, PacketPtr pkt);
-
- /**
- * Send a retry to the peer that previously attempted a
- * sendTimingReq to this protocol and failed.
- */
- void sendRetryReq(TimingRequestProtocol *peer);
-
- /**
- * Send a retry to the peer that previously attempted a
- * sendTimingSnoopResp to this peer and failed.
- */
- void sendRetrySnoopResp(TimingRequestProtocol *peer);
-
- /**
- * Receive a timing request from the peer.
- */
- virtual bool recvTimingReq(PacketPtr pkt) = 0;
-
- /**
- * Availability request from the peer.
- */
- virtual bool tryTiming(PacketPtr pkt) = 0;
-
- /**
- * Receive a timing snoop response from the peer.
- */
- virtual bool recvTimingSnoopResp(PacketPtr pkt) = 0;
-
- /**
- * Called by the peer if sendTimingResp was called on this
- * protocol (causing recvTimingResp to be called on the peer)
- * and was unsuccessful.
- */
- virtual void recvRespRetry() = 0;
-};
-
-#endif //__MEM_TIMING_PROTOCOL_HH__