virtual void recvFunctional(Packet &pkt)
{ device->recvAtomic(pkt) };
- virtual void recvAddressRangeQuery(std::list<Range<Addr> > &range_list,
- bool &owner)
+ virtual void getDeviceAddressRanges(AddrRangeList &range_list, bool &owner)
{ device->addressRanges(range_list, owner); }
void sendTiming(Packet &pkt, Tick time)
virtual Packet *recvRetry()
{ return transmitList.pop_front(); }
- virtual void recvAddressRangeQuery(std::list<Range<Addr> > &range_list,
- bool &owner)
+ virtual void getDeviceAddressRanges(AddrRangeList &range_list, bool &owner)
{ range_list.clear(); owner = true; }
void dmaAction(Memory::Command cmd, DmaPort port, Addr addr, int size,
PioPort *pioPort;
- virtual void addressRanges(std::list<Range<Addr> > &range_list,
- bool &owner) = 0;
+ virtual void addressRanges(AddrRangeList &range_list, bool &owner) = 0;
virtual read(Packet &pkt) = 0;
// downstream from this bus, yes? That is, the union of all
// the 'owned' address ranges of all the other interfaces on
// this bus...
- virtual void addressRanges(std::list<Range<Addr> > &range_list,
- bool &owner);
+ virtual void addressRanges(AddrRangeList &range_list, bool &owner);
};
/** A count of the number of interfaces connected to this bus. */
#include "mem/packet.hh"
#include "mem/request.hh"
+/** This typedef is used to clean up the parameter list of
+ * getDeviceAddressRanges() and getPeerAddressRanges(). It's declared
+ * outside the Port object since it's also used by some mem objects.
+ * Eventually we should move this typedef to wherever Addr is
+ * defined.
+ */
+
+typedef std::list<Range<Addr> > AddrRangeList;
+
/**
* Ports are used to interface memory objects to
* each other. They will always come in pairs, and we refer to the other
an object wants to own some ranges and snoop on others, it will
need to use two different ports.
*/
- virtual void recvAddressRangesQuery(std::list<Range<Addr> > &range_list,
- bool &owner) { panic("??"); }
+ virtual void getDeviceAddressRanges(AddrRangeList &range_list,
+ bool &owner)
+ { panic("??"); }
public:
/** Called by the associated device if it wishes to find out the address
ranges connected to the peer ports devices.
*/
- void sendAddressRangesQuery(std::list<Range<Addr> > &range_list,
- bool &owner)
- { peer->recvAddressRangesQuery(range_list, owner); }
+ void getPeerAddressRanges(AddrRangeList &range_list, bool &owner)
+ { peer->getDeviceAddressRanges(range_list, owner); }
// Do we need similar wrappers for sendAtomic()? If not, should
// we drop the "Functional" from the names?