gem5  v20.1.0.0
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
Sinic::Device Class Reference

#include <sinic.hh>

Inheritance diagram for Sinic::Device:
Sinic::Base EtherDevBase EtherDevice PciDevice DmaDevice PioDevice ClockedObject SimObject Clocked EventManager Serializable Drainable Stats::Group

Classes

struct  VirtualReg
 

Public Member Functions

bool recvPacket (EthPacketPtr packet)
 device ethernet interface More...
 
void transferDone ()
 
PortgetPort (const std::string &if_name, PortID idx=InvalidPortID) override
 Get a port with a given name and index. More...
 
Tick read (PacketPtr pkt) override
 Memory Interface. More...
 
Tick write (PacketPtr pkt) override
 IPR read of device register. More...
 
virtual void drainResume () override
 Resume execution after a successful drain. More...
 
void prepareIO (ContextID cpu, int index)
 
void prepareRead (ContextID cpu, int index)
 
void prepareWrite (ContextID cpu, int index)
 
void regStats () override
 Callback to set stat parameters. More...
 
void resetStats () override
 Callback to reset stats. More...
 
void serialize (CheckpointOut &cp) const override
 Serialization stuff. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
 Device (const Params *p)
 
 ~Device ()
 
- Public Member Functions inherited from Sinic::Base
const Paramsparams () const
 
 Base (const Params *p)
 
- Public Member Functions inherited from EtherDevBase
 EtherDevBase (const EtherDevBaseParams *params)
 
const EtherDevBaseParams * params () const
 
- Public Member Functions inherited from EtherDevice
 EtherDevice (const Params *params)
 
const Paramsparams () const
 
- Public Member Functions inherited from PciDevice
virtual Tick writeConfig (PacketPtr pkt)
 Write to the PCI config space data that is stored locally. More...
 
virtual Tick readConfig (PacketPtr pkt)
 Read from the PCI config space data that is stored locally. More...
 
Addr pciToDma (Addr pci_addr) const
 
void intrPost ()
 
void intrClear ()
 
uint8_t interruptLine () const
 
AddrRangeList getAddrRanges () const override
 Determine the address ranges that this device responds to. More...
 
 PciDevice (const PciDeviceParams *params)
 Constructor for PCI Dev. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize this object to the given output stream. More...
 
void unserialize (CheckpointIn &cp) override
 Reconstruct the state of this object from a checkpoint. More...
 
const PciBusAddrbusAddr () const
 
- Public Member Functions inherited from DmaDevice
 DmaDevice (const Params *p)
 
virtual ~DmaDevice ()
 
void dmaWrite (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0)
 
void dmaWrite (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0)
 
void dmaRead (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0)
 
void dmaRead (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0)
 
bool dmaPending () const
 
void init () override
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
unsigned int cacheBlockSize () const
 
- Public Member Functions inherited from PioDevice
 PioDevice (const Params *p)
 
virtual ~PioDevice ()
 
const Paramsparams () const
 
void init () override
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
- Public Member Functions inherited from ClockedObject
 ClockedObject (const ClockedObjectParams *p)
 
const Paramsparams () const
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from SimObject
const Paramsparams () const
 
 SimObject (const Params *_params)
 
virtual ~SimObject ()
 
virtual const std::string name () const
 
virtual void loadState (CheckpointIn &cp)
 loadState() is called on each SimObject when restoring from a checkpoint. More...
 
virtual void initState ()
 initState() is called on each SimObject when not restoring from a checkpoint. More...
 
virtual void regProbePoints ()
 Register probe points for this object. More...
 
virtual void regProbeListeners ()
 Register probe listeners for this object. More...
 
ProbeManagergetProbeManager ()
 Get the probe manager for this object. More...
 
virtual void startup ()
 startup() is the final initialization call before simulation. More...
 
DrainState drain () override
 Provide a default implementation of the drain interface for objects that don't need draining. More...
 
virtual void memWriteback ()
 Write back dirty buffers to memory using functional writes. More...
 
virtual void memInvalidate ()
 Invalidate the contents of memory buffers. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from EventManager
EventQueueeventQueue () const
 
void schedule (Event &event, Tick when)
 
void deschedule (Event &event)
 
void reschedule (Event &event, Tick when, bool always=false)
 
void schedule (Event *event, Tick when)
 
void deschedule (Event *event)
 
void reschedule (Event *event, Tick when, bool always=false)
 
void wakeupEventQueue (Tick when=(Tick) -1)
 This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers. More...
 
void setCurTick (Tick newVal)
 
 EventManager (EventManager &em)
 Event manger manages events in the event queue. More...
 
 EventManager (EventManager *em)
 
 EventManager (EventQueue *eq)
 
- Public Member Functions inherited from Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 
- Public Member Functions inherited from Drainable
DrainState drainState () const
 Return the current drain state of an object. More...
 
virtual void notifyFork ()
 Notify a child process of a fork. More...
 
- Public Member Functions inherited from Stats::Group
 Group (Group *parent, const char *name=nullptr)
 Construct a new statistics group. More...
 
virtual ~Group ()
 
virtual void preDumpStats ()
 Callback before stats are dumped. More...
 
void addStat (Stats::Info *info)
 Register a stat with this group. More...
 
const std::map< std::string, Group * > & getStatGroups () const
 Get all child groups associated with this object. More...
 
const std::vector< Info * > & getStats () const
 Get all stats associated with this object. More...
 
void addStatGroup (const char *name, Group *block)
 Add a stat block as a child of this block. More...
 
const InforesolveStat (std::string name) const
 Resolve a stat by its name within this group. More...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 
- Public Member Functions inherited from Clocked
void updateClockPeriod ()
 Update the tick to the current tick. More...
 
Tick clockEdge (Cycles cycles=Cycles(0)) const
 Determine the tick when a cycle begins, by default the current one, but the argument also enables the caller to determine a future cycle. More...
 
Cycles curCycle () const
 Determine the current cycle, corresponding to a tick aligned to a clock edge. More...
 
Tick nextCycle () const
 Based on the clock of the object, determine the start tick of the first cycle that is at least one cycle in the future. More...
 
uint64_t frequency () const
 
Tick clockPeriod () const
 
double voltage () const
 
Cycles ticksToCycles (Tick t) const
 
Tick cyclesToTicks (Cycles c) const
 

Protected Types

enum  RxState {
  rxIdle, rxFifoBlock, rxBeginCopy, rxCopy,
  rxCopyDone
}
 Receive State Machine States. More...
 
enum  TxState {
  txIdle, txFifoBlock, txBeginCopy, txCopy,
  txCopyDone
}
 Transmit State Machine states. More...
 
typedef std::vector< VirtualRegVirtualRegs
 
typedef std::list< unsigned > VirtualList
 

Protected Member Functions

uint8_t & regData8 (Addr daddr)
 
uint32_t & regData32 (Addr daddr)
 
uint64_t & regData64 (Addr daddr)
 
void reset ()
 
void rxKick ()
 
void txKick ()
 
void transmit ()
 Retransmit event. More...
 
void txEventTransmit ()
 
void txDump () const
 
void rxDump () const
 
bool rxFilter (const EthPacketPtr &packet)
 receive address filter More...
 
void changeConfig (uint32_t newconfig)
 device configuration More...
 
void command (uint32_t command)
 
void rxDmaDone ()
 DMA parameters. More...
 
void txDmaDone ()
 
void devIntrPost (uint32_t interrupts)
 Interrupt management. More...
 
void devIntrClear (uint32_t interrupts=Regs::Intr_All)
 
void devIntrChangeMask (uint32_t newmask)
 
- Protected Member Functions inherited from Sinic::Base
void cpuIntrPost (Tick when)
 
void cpuInterrupt ()
 
void cpuIntrClear ()
 
bool cpuIntrPending () const
 
void cpuIntrAck ()
 
- Protected Member Functions inherited from PciDevice
bool isLargeBAR (int bar) const
 Does the given BAR represent 32 lower bits of a 64-bit address? More...
 
bool isBAR (Addr addr, int bar) const
 Does the given address lie within the space mapped by the given base address register? More...
 
int getBAR (Addr addr)
 Which base address register (if any) maps the given address? More...
 
bool getBAR (Addr addr, int &bar, Addr &offs)
 Which base address register (if any) maps the given address? More...
 
- Protected Member Functions inherited from Drainable
 Drainable ()
 
virtual ~Drainable ()
 
void signalDrainDone () const
 Signal that an object is drained. More...
 
- Protected Member Functions inherited from Clocked
 Clocked (ClockDomain &clk_domain)
 Create a clocked object and set the clock domain based on the parameters. More...
 
 Clocked (Clocked &)=delete
 
Clockedoperator= (Clocked &)=delete
 
virtual ~Clocked ()
 Virtual destructor due to inheritance. More...
 
void resetClock () const
 Reset the object's clock using the current global tick value. More...
 
virtual void clockPeriodUpdated ()
 A hook subclasses can implement so they can do any extra work that's needed when the clock rate is changed. More...
 

Protected Attributes

struct {
   uint32_t   Config
 
   uint32_t   Command
 
   uint32_t   IntrStatus
 
   uint32_t   IntrMask
 
   uint32_t   RxMaxCopy
 
   uint32_t   TxMaxCopy
 
   uint32_t   ZeroCopySize
 
   uint32_t   ZeroCopyMark
 
   uint32_t   VirtualCount
 
   uint32_t   RxMaxIntr
 
   uint32_t   RxFifoSize
 
   uint32_t   TxFifoSize
 
   uint32_t   RxFifoLow
 
   uint32_t   TxFifoLow
 
   uint32_t   RxFifoHigh
 
   uint32_t   TxFifoHigh
 
   uint64_t   RxData
 
   uint64_t   RxDone
 
   uint64_t   RxWait
 
   uint64_t   TxData
 
   uint64_t   TxDone
 
   uint64_t   TxWait
 
   uint64_t   HwAddr
 
   uint64_t   RxStatus
 
regs
 device register file More...
 
Counter rxUnique
 
Counter txUnique
 
VirtualRegs virtualRegs
 
VirtualList rxList
 
VirtualList rxBusy
 
int rxActive
 
VirtualList txList
 
int rxBusyCount
 
int rxMappedCount
 
int rxDirtyCount
 
RxState rxState
 
PacketFifo rxFifo
 
PacketFifo::iterator rxFifoPtr
 
bool rxEmpty
 
bool rxLow
 
Addr rxDmaAddr
 
uint8_t * rxDmaData
 
unsigned rxDmaLen
 
TxState txState
 
PacketFifo txFifo
 
bool txFull
 
EthPacketPtr txPacket
 
int txPacketOffset
 
int txPacketBytes
 
Addr txDmaAddr
 
uint8_t * txDmaData
 
int txDmaLen
 
Tick rxKickTick
 
Tick txKickTick
 
EventFunctionWrapper txEvent
 
EventFunctionWrapper rxDmaEvent
 
EventFunctionWrapper txDmaEvent
 
Tick dmaReadDelay
 
Tick dmaReadFactor
 
Tick dmaWriteDelay
 
Tick dmaWriteFactor
 
- Protected Attributes inherited from Sinic::Base
bool rxEnable
 
bool txEnable
 
Tick intrDelay
 
Tick intrTick
 
bool cpuIntrEnable
 
bool cpuPendingIntr
 
EventFunctionWrapperintrEvent
 
Interfaceinterface
 
- Protected Attributes inherited from EtherDevice
Stats::Scalar txBytes
 
Stats::Scalar rxBytes
 
Stats::Scalar txPackets
 
Stats::Scalar rxPackets
 
Stats::Scalar txIpChecksums
 
Stats::Scalar rxIpChecksums
 
Stats::Scalar txTcpChecksums
 
Stats::Scalar rxTcpChecksums
 
Stats::Scalar txUdpChecksums
 
Stats::Scalar rxUdpChecksums
 
Stats::Scalar descDmaReads
 
Stats::Scalar descDmaWrites
 
Stats::Scalar descDmaRdBytes
 
Stats::Scalar descDmaWrBytes
 
Stats::Formula totBandwidth
 
Stats::Formula totPackets
 
Stats::Formula totBytes
 
Stats::Formula totPacketRate
 
Stats::Formula txBandwidth
 
Stats::Formula rxBandwidth
 
Stats::Formula txPacketRate
 
Stats::Formula rxPacketRate
 
Stats::Scalar postedSwi
 
Stats::Formula coalescedSwi
 
Stats::Scalar totalSwi
 
Stats::Scalar postedRxIdle
 
Stats::Formula coalescedRxIdle
 
Stats::Scalar totalRxIdle
 
Stats::Scalar postedRxOk
 
Stats::Formula coalescedRxOk
 
Stats::Scalar totalRxOk
 
Stats::Scalar postedRxDesc
 
Stats::Formula coalescedRxDesc
 
Stats::Scalar totalRxDesc
 
Stats::Scalar postedTxOk
 
Stats::Formula coalescedTxOk
 
Stats::Scalar totalTxOk
 
Stats::Scalar postedTxIdle
 
Stats::Formula coalescedTxIdle
 
Stats::Scalar totalTxIdle
 
Stats::Scalar postedTxDesc
 
Stats::Formula coalescedTxDesc
 
Stats::Scalar totalTxDesc
 
Stats::Scalar postedRxOrn
 
Stats::Formula coalescedRxOrn
 
Stats::Scalar totalRxOrn
 
Stats::Formula coalescedTotal
 
Stats::Scalar postedInterrupts
 
Stats::Scalar droppedPackets
 
- Protected Attributes inherited from PciDevice
const PciBusAddr _busAddr
 
PCIConfig config
 The current config space. More...
 
std::vector< MSIXTablemsix_table
 MSIX Table and PBA Structures. More...
 
std::vector< MSIXPbaEntrymsix_pba
 
uint32_t BARSize [6]
 The size of the BARs. More...
 
Addr BARAddrs [6]
 The current address mapping of the BARs. More...
 
bool legacyIO [6]
 Whether the BARs are really hardwired legacy IO locations. More...
 
PciHost::DeviceInterface hostInterface
 
Tick pioDelay
 
Tick configDelay
 
const int PMCAP_BASE
 The capability list structures and base addresses. More...
 
const int PMCAP_ID_OFFSET
 
const int PMCAP_PC_OFFSET
 
const int PMCAP_PMCS_OFFSET
 
PMCAP pmcap
 
const int MSICAP_BASE
 
MSICAP msicap
 
const int MSIXCAP_BASE
 
const int MSIXCAP_ID_OFFSET
 
const int MSIXCAP_MXC_OFFSET
 
const int MSIXCAP_MTAB_OFFSET
 
const int MSIXCAP_MPBA_OFFSET
 
int MSIX_TABLE_OFFSET
 
int MSIX_TABLE_END
 
int MSIX_PBA_OFFSET
 
int MSIX_PBA_END
 
MSIXCAP msixcap
 
const int PXCAP_BASE
 
PXCAP pxcap
 
- Protected Attributes inherited from DmaDevice
DmaPort dmaPort
 
- Protected Attributes inherited from PioDevice
Systemsys
 
PioPort< PioDevicepioPort
 The pioPort that handles the requests for us and provides us requests that it sees. More...
 
- Protected Attributes inherited from SimObject
const SimObjectParams * _params
 Cached copy of the object parameters. More...
 
- Protected Attributes inherited from EventManager
EventQueueeventq
 A pointer to this object's event queue. More...
 

Private Attributes

Stats::Scalar totalVnicDistance
 Statistics. More...
 
Stats::Scalar numVnicDistance
 
Stats::Scalar maxVnicDistance
 
Stats::Formula avgVnicDistance
 
int _maxVnicDistance
 

Additional Inherited Members

- Public Types inherited from Sinic::Base
typedef SinicParams Params
 Construction/Destruction/Parameters. More...
 
- Public Types inherited from EtherDevice
typedef EtherDeviceParams Params
 
- Public Types inherited from DmaDevice
typedef DmaDeviceParams Params
 
- Public Types inherited from PioDevice
typedef PioDeviceParams Params
 
- Public Types inherited from ClockedObject
typedef ClockedObjectParams Params
 Parameters of ClockedObject. More...
 
- Public Types inherited from SimObject
typedef SimObjectParams Params
 
- Static Public Member Functions inherited from SimObject
static void serializeAll (CheckpointOut &cp)
 Serialize all SimObjects in the system. More...
 
static SimObjectfind (const char *name)
 Find the SimObject with the given name and return a pointer to it. More...
 
- Static Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 Serializes all the SimObjects. More...
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Public Attributes inherited from ClockedObject
PowerStatepowerState
 

Detailed Description

Definition at line 84 of file sinic.hh.

Member Typedef Documentation

◆ VirtualList

typedef std::list<unsigned> Sinic::Device::VirtualList
protected

Definition at line 153 of file sinic.hh.

◆ VirtualRegs

Definition at line 152 of file sinic.hh.

Member Enumeration Documentation

◆ RxState

enum Sinic::Device::RxState
protected

Receive State Machine States.

Enumerator
rxIdle 
rxFifoBlock 
rxBeginCopy 
rxCopy 
rxCopyDone 

Definition at line 88 of file sinic.hh.

◆ TxState

enum Sinic::Device::TxState
protected

Transmit State Machine states.

Enumerator
txIdle 
txFifoBlock 
txBeginCopy 
txCopy 
txCopyDone 

Definition at line 97 of file sinic.hh.

Constructor & Destructor Documentation

◆ Device()

Sinic::Device::Device ( const Params p)

Definition at line 81 of file sinic.cc.

References txEventTransmit().

◆ ~Device()

Sinic::Device::~Device ( )

Definition at line 97 of file sinic.cc.

Member Function Documentation

◆ changeConfig()

void Sinic::Device::changeConfig ( uint32_t  newconfig)
protected

◆ command()

void Sinic::Device::command ( uint32_t  command)
protected

Definition at line 597 of file sinic.cc.

References devIntrPost(), and reset().

Referenced by write().

◆ devIntrChangeMask()

void Sinic::Device::devIntrChangeMask ( uint32_t  newmask)
protected

Definition at line 459 of file sinic.cc.

References Sinic::Base::cpuIntrClear(), Sinic::Base::cpuIntrPost(), curTick(), DPRINTF, and regs.

Referenced by write().

◆ devIntrClear()

void Sinic::Device::devIntrClear ( uint32_t  interrupts = Regs::Intr_All)
protected

Definition at line 443 of file sinic.cc.

References Sinic::Base::cpuIntrClear(), DPRINTF, panic, and regs.

Referenced by read(), and write().

◆ devIntrPost()

void Sinic::Device::devIntrPost ( uint32_t  interrupts)
protected

Interrupt management.

Definition at line 407 of file sinic.cc.

References Sinic::Base::cpuIntrPost(), curTick(), DPRINTF, Sinic::Base::intrDelay, panic, regs, rxEmpty, and txFull.

Referenced by command(), recvPacket(), rxKick(), transmit(), and txKick().

◆ drainResume()

void Sinic::Device::drainResume ( )
overridevirtual

Resume execution after a successful drain.

Reimplemented from Drainable.

Definition at line 1189 of file sinic.cc.

References Drainable::drainResume(), rxKick(), and txKick().

◆ getPort()

Port & Sinic::Device::getPort ( const std::string &  if_name,
PortID  idx = InvalidPortID 
)
overridevirtual

Get a port with a given name and index.

This is used at binding time and returns a reference to a protocol-agnostic port.

gem5 has a request and response port interface. All memory objects are connected together via ports. These ports provide a rigid interface between these memory objects. These ports implement three different memory system modes: timing, atomic, and functional. The most important mode is the timing mode and here timing mode is used for conducting cycle-level timing experiments. The other modes are only used in special circumstances and should not be used to conduct cycle-level timing experiments. The other modes are only used in special circumstances. These ports allow SimObjects to communicate with each other.

Parameters
if_namePort name
idxIndex in the case of a VectorPort
Returns
A reference to the given port

Reimplemented from DmaDevice.

Definition at line 138 of file sinic.cc.

References DmaDevice::getPort(), and Sinic::Base::interface.

◆ prepareIO()

void Sinic::Device::prepareIO ( ContextID  cpu,
int  index 
)

Definition at line 147 of file sinic.cc.

References MipsISA::index, panic, and virtualRegs.

Referenced by prepareRead(), and prepareWrite().

◆ prepareRead()

void Sinic::Device::prepareRead ( ContextID  cpu,
int  index 
)

◆ prepareWrite()

void Sinic::Device::prepareWrite ( ContextID  cpu,
int  index 
)

Definition at line 201 of file sinic.cc.

References MipsISA::index, and prepareIO().

Referenced by write().

◆ read()

Tick Sinic::Device::read ( PacketPtr  pkt)
overridevirtual

◆ recvPacket()

bool Sinic::Device::recvPacket ( EthPacketPtr  packet)

◆ regData32()

uint32_t& Sinic::Device::regData32 ( Addr  daddr)
inlineprotected

Definition at line 167 of file sinic.hh.

References regData8().

Referenced by read().

◆ regData64()

uint64_t& Sinic::Device::regData64 ( Addr  daddr)
inlineprotected

Definition at line 168 of file sinic.hh.

References regData8().

Referenced by read().

◆ regData8()

uint8_t& Sinic::Device::regData8 ( Addr  daddr)
inlineprotected

Definition at line 166 of file sinic.hh.

References regs.

Referenced by regData32(), and regData64().

◆ regStats()

void Sinic::Device::regStats ( )
overridevirtual

Callback to set stat parameters.

This callback is typically used for complex stats (e.g., distributions) that need parameters in addition to a name and a description. Stat names and descriptions should typically be set from the constructor usingo from the constructor using the ADD_STAT macro.

Reimplemented from EtherDevice.

Definition at line 101 of file sinic.cc.

References _maxVnicDistance, avgVnicDistance, Stats::DataWrap< Derived, InfoProxyType >::desc(), maxVnicDistance, SimObject::name(), Stats::DataWrap< Derived, InfoProxyType >::name(), numVnicDistance, EtherDevice::regStats(), and totalVnicDistance.

◆ reset()

void Sinic::Device::reset ( )
protected

◆ resetStats()

void Sinic::Device::resetStats ( )
overridevirtual

Callback to reset stats.

Reimplemented from Stats::Group.

Definition at line 130 of file sinic.cc.

References _maxVnicDistance, and Stats::Group::resetStats().

◆ rxDmaDone()

void Sinic::Device::rxDmaDone ( )
protected

DMA parameters.

Definition at line 677 of file sinic.cc.

References DDUMP, DPRINTF, rxCopy, rxCopyDone, rxDmaAddr, rxDmaData, rxDmaLen, rxKick(), rxState, txBeginCopy, txKick(), and txState.

◆ rxDump()

void Sinic::Device::rxDump ( ) const
protected

◆ rxFilter()

bool Sinic::Device::rxFilter ( const EthPacketPtr packet)
protected

receive address filter

Definition at line 1140 of file sinic.cc.

References panic, and regs.

Referenced by recvPacket().

◆ rxKick()

void Sinic::Device::rxKick ( )
protected

◆ serialize()

void Sinic::Device::serialize ( CheckpointOut cp) const
overridevirtual

◆ transferDone()

void Sinic::Device::transferDone ( )

◆ transmit()

void Sinic::Device::transmit ( )
protected

◆ txDmaDone()

void Sinic::Device::txDmaDone ( )
protected

◆ txDump()

void Sinic::Device::txDump ( ) const
protected

◆ txEventTransmit()

void Sinic::Device::txEventTransmit ( )
inlineprotected

Definition at line 203 of file sinic.hh.

References transmit(), txFifoBlock, txKick(), and txState.

Referenced by Device().

◆ txKick()

void Sinic::Device::txKick ( )
protected

◆ unserialize()

void Sinic::Device::unserialize ( CheckpointIn cp)
overridevirtual

◆ write()

Tick Sinic::Device::write ( PacketPtr  pkt)
overridevirtual

IPR read of device register.

Fault Device::iprRead(Addr daddr, ContextID cpu, uint64_t &result) { if (!regValid(daddr)) panic("invalid address: da=%#x", daddr);

const Regs::Info &info = regInfo(daddr); if (!info.read) panic("reading %s (write only): cpu=%d da=%#x", info.name, cpu, daddr);

DPRINTF(EthernetPIO, "IPR read %s: cpu=%d da=%#x\n", info.name, cpu, daddr);

prepareRead(cpu, 0);

if (info.size == 4) result = regData32(daddr);

if (info.size == 8) result = regData64(daddr);

DPRINTF(EthernetPIO, "IPR read %s: cpu=%s da=%#x val=%#x\n", info.name, cpu, result);

return NoFault; } I/O write of device register

Implements PioDevice.

Definition at line 295 of file sinic.cc.

References PciDevice::BARAddrs, PciDevice::BARSize, changeConfig(), PCIConfig::command, command(), PciDevice::config, devIntrChangeMask(), devIntrClear(), DPRINTF, PacketFifo::end(), Packet::getAddr(), Packet::getLE(), Packet::getSize(), MipsISA::index, Sinic::Regs::Info::name, panic, PCI_CMD_MSE, PciDevice::pioDelay, prepareWrite(), Sinic::regInfo(), regs, Sinic::regValid(), Packet::req, rxBusy, rxBusyCount, Sinic::Device::VirtualReg::RxData, Sinic::Device::VirtualReg::RxDone, Sinic::Base::rxEnable, rxFifo, rxFifoBlock, rxIdle, Sinic::Device::VirtualReg::rxIndex, rxKick(), rxList, rxState, Sinic::RxStateStrings, Sinic::Device::VirtualReg::rxUnique, rxUnique, Sinic::Regs::Info::size, Sinic::Device::VirtualReg::TxDone, Sinic::Base::txEnable, txFifoBlock, txIdle, txKick(), txList, txState, Sinic::TxStateStrings, Sinic::Device::VirtualReg::txUnique, txUnique, Sinic::Regs::VirtualMask, virtualRegs, Sinic::Regs::VirtualShift, and Sinic::Regs::Info::write.

Member Data Documentation

◆ _maxVnicDistance

int Sinic::Device::_maxVnicDistance
private

Definition at line 279 of file sinic.hh.

Referenced by regStats(), resetStats(), and rxKick().

◆ avgVnicDistance

Stats::Formula Sinic::Device::avgVnicDistance
private

Definition at line 277 of file sinic.hh.

Referenced by regStats().

◆ Command

uint32_t Sinic::Device::Command

Definition at line 108 of file sinic.hh.

◆ Config

uint32_t Sinic::Device::Config

Definition at line 107 of file sinic.hh.

◆ dmaReadDelay

Tick Sinic::Device::dmaReadDelay
protected

Definition at line 244 of file sinic.hh.

◆ dmaReadFactor

Tick Sinic::Device::dmaReadFactor
protected

Definition at line 245 of file sinic.hh.

◆ dmaWriteDelay

Tick Sinic::Device::dmaWriteDelay
protected

Definition at line 246 of file sinic.hh.

◆ dmaWriteFactor

Tick Sinic::Device::dmaWriteFactor
protected

Definition at line 247 of file sinic.hh.

◆ HwAddr

uint64_t Sinic::Device::HwAddr

Definition at line 129 of file sinic.hh.

◆ IntrMask

uint32_t Sinic::Device::IntrMask

Definition at line 110 of file sinic.hh.

◆ IntrStatus

uint32_t Sinic::Device::IntrStatus

Definition at line 109 of file sinic.hh.

◆ maxVnicDistance

Stats::Scalar Sinic::Device::maxVnicDistance
private

Definition at line 276 of file sinic.hh.

Referenced by regStats(), and rxKick().

◆ numVnicDistance

Stats::Scalar Sinic::Device::numVnicDistance
private

Definition at line 275 of file sinic.hh.

Referenced by regStats(), and rxKick().

◆ regs

struct { ... } Sinic::Device::regs

◆ rxActive

int Sinic::Device::rxActive
protected

Definition at line 159 of file sinic.hh.

Referenced by reset(), rxKick(), serialize(), and unserialize().

◆ rxBusy

VirtualList Sinic::Device::rxBusy
protected

Definition at line 158 of file sinic.hh.

Referenced by reset(), rxKick(), serialize(), unserialize(), and write().

◆ rxBusyCount

int Sinic::Device::rxBusyCount
protected

Definition at line 162 of file sinic.hh.

Referenced by prepareRead(), reset(), rxKick(), serialize(), unserialize(), and write().

◆ RxData

uint64_t Sinic::Device::RxData

Definition at line 123 of file sinic.hh.

◆ rxDirtyCount

int Sinic::Device::rxDirtyCount
protected

Definition at line 164 of file sinic.hh.

Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().

◆ rxDmaAddr

Addr Sinic::Device::rxDmaAddr
protected

Definition at line 176 of file sinic.hh.

Referenced by rxDmaDone(), and rxKick().

◆ rxDmaData

uint8_t* Sinic::Device::rxDmaData
protected

Definition at line 177 of file sinic.hh.

Referenced by rxDmaDone(), and rxKick().

◆ rxDmaEvent

EventFunctionWrapper Sinic::Device::rxDmaEvent
protected

Definition at line 239 of file sinic.hh.

Referenced by rxKick().

◆ rxDmaLen

unsigned Sinic::Device::rxDmaLen
protected

Definition at line 178 of file sinic.hh.

Referenced by rxDmaDone(), and rxKick().

◆ RxDone

uint64_t Sinic::Device::RxDone

Definition at line 124 of file sinic.hh.

◆ rxEmpty

bool Sinic::Device::rxEmpty
protected

Definition at line 174 of file sinic.hh.

Referenced by devIntrPost(), reset(), rxKick(), serialize(), and unserialize().

◆ rxFifo

PacketFifo Sinic::Device::rxFifo
protected

Definition at line 172 of file sinic.hh.

Referenced by prepareRead(), recvPacket(), reset(), rxKick(), serialize(), unserialize(), and write().

◆ RxFifoHigh

uint32_t Sinic::Device::RxFifoHigh

Definition at line 121 of file sinic.hh.

◆ RxFifoLow

uint32_t Sinic::Device::RxFifoLow

Definition at line 119 of file sinic.hh.

◆ rxFifoPtr

PacketFifo::iterator Sinic::Device::rxFifoPtr
protected

Definition at line 173 of file sinic.hh.

Referenced by prepareRead(), recvPacket(), reset(), rxKick(), serialize(), and unserialize().

◆ RxFifoSize

uint32_t Sinic::Device::RxFifoSize

Definition at line 117 of file sinic.hh.

◆ rxKickTick

Tick Sinic::Device::rxKickTick
protected

Definition at line 194 of file sinic.hh.

Referenced by rxKick().

◆ rxList

VirtualList Sinic::Device::rxList
protected

Definition at line 157 of file sinic.hh.

Referenced by reset(), rxKick(), serialize(), unserialize(), and write().

◆ rxLow

bool Sinic::Device::rxLow
protected

Definition at line 175 of file sinic.hh.

Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().

◆ rxMappedCount

int Sinic::Device::rxMappedCount
protected

Definition at line 163 of file sinic.hh.

Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().

◆ RxMaxCopy

uint32_t Sinic::Device::RxMaxCopy

Definition at line 111 of file sinic.hh.

◆ RxMaxIntr

uint32_t Sinic::Device::RxMaxIntr

Definition at line 116 of file sinic.hh.

◆ rxState

RxState Sinic::Device::rxState
protected

Definition at line 171 of file sinic.hh.

Referenced by reset(), rxDmaDone(), rxKick(), serialize(), txDmaDone(), unserialize(), and write().

◆ RxStatus

uint64_t Sinic::Device::RxStatus

Definition at line 130 of file sinic.hh.

◆ rxUnique

Counter Sinic::Device::rxUnique
protected

Definition at line 154 of file sinic.hh.

Referenced by unserialize(), and write().

◆ RxWait

uint64_t Sinic::Device::RxWait

Definition at line 125 of file sinic.hh.

◆ totalVnicDistance

Stats::Scalar Sinic::Device::totalVnicDistance
private

Statistics.

Definition at line 274 of file sinic.hh.

Referenced by regStats(), and rxKick().

◆ TxData

uint64_t Sinic::Device::TxData

Definition at line 126 of file sinic.hh.

◆ txDmaAddr

Addr Sinic::Device::txDmaAddr
protected

Definition at line 186 of file sinic.hh.

Referenced by txDmaDone(), and txKick().

◆ txDmaData

uint8_t* Sinic::Device::txDmaData
protected

Definition at line 187 of file sinic.hh.

Referenced by txDmaDone(), and txKick().

◆ txDmaEvent

EventFunctionWrapper Sinic::Device::txDmaEvent
protected

Definition at line 242 of file sinic.hh.

Referenced by txKick().

◆ txDmaLen

int Sinic::Device::txDmaLen
protected

Definition at line 188 of file sinic.hh.

Referenced by txDmaDone(), and txKick().

◆ TxDone

uint64_t Sinic::Device::TxDone

Definition at line 127 of file sinic.hh.

◆ txEvent

EventFunctionWrapper Sinic::Device::txEvent
protected

Definition at line 209 of file sinic.hh.

Referenced by serialize(), transferDone(), and unserialize().

◆ txFifo

PacketFifo Sinic::Device::txFifo
protected

Definition at line 181 of file sinic.hh.

Referenced by prepareRead(), reset(), serialize(), transferDone(), transmit(), txKick(), and unserialize().

◆ TxFifoHigh

uint32_t Sinic::Device::TxFifoHigh

Definition at line 122 of file sinic.hh.

◆ TxFifoLow

uint32_t Sinic::Device::TxFifoLow

Definition at line 120 of file sinic.hh.

◆ TxFifoSize

uint32_t Sinic::Device::TxFifoSize

Definition at line 118 of file sinic.hh.

◆ txFull

bool Sinic::Device::txFull
protected

Definition at line 182 of file sinic.hh.

Referenced by devIntrPost(), reset(), serialize(), txKick(), and unserialize().

◆ txKickTick

Tick Sinic::Device::txKickTick
protected

Definition at line 197 of file sinic.hh.

Referenced by txKick().

◆ txList

VirtualList Sinic::Device::txList
protected

Definition at line 160 of file sinic.hh.

Referenced by reset(), serialize(), txKick(), unserialize(), and write().

◆ TxMaxCopy

uint32_t Sinic::Device::TxMaxCopy

Definition at line 112 of file sinic.hh.

◆ txPacket

EthPacketPtr Sinic::Device::txPacket
protected

Definition at line 183 of file sinic.hh.

Referenced by serialize(), txKick(), and unserialize().

◆ txPacketBytes

int Sinic::Device::txPacketBytes
protected

Definition at line 185 of file sinic.hh.

Referenced by serialize(), and unserialize().

◆ txPacketOffset

int Sinic::Device::txPacketOffset
protected

Definition at line 184 of file sinic.hh.

Referenced by serialize(), txKick(), and unserialize().

◆ txState

TxState Sinic::Device::txState
protected

Definition at line 180 of file sinic.hh.

Referenced by reset(), rxDmaDone(), serialize(), txDmaDone(), txEventTransmit(), txKick(), unserialize(), and write().

◆ txUnique

Counter Sinic::Device::txUnique
protected

Definition at line 155 of file sinic.hh.

Referenced by unserialize(), and write().

◆ TxWait

uint64_t Sinic::Device::TxWait

Definition at line 128 of file sinic.hh.

◆ VirtualCount

uint32_t Sinic::Device::VirtualCount

Definition at line 115 of file sinic.hh.

◆ virtualRegs

VirtualRegs Sinic::Device::virtualRegs
protected

Definition at line 156 of file sinic.hh.

Referenced by prepareIO(), prepareRead(), reset(), rxKick(), serialize(), txKick(), unserialize(), and write().

◆ ZeroCopyMark

uint32_t Sinic::Device::ZeroCopyMark

Definition at line 114 of file sinic.hh.

◆ ZeroCopySize

uint32_t Sinic::Device::ZeroCopySize

Definition at line 113 of file sinic.hh.


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:03:11 for gem5 by doxygen 1.8.17