gem5  v20.1.0.0
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
CopyEngine::CopyEngineChannel Class Reference
Inheritance diagram for CopyEngine::CopyEngineChannel:
Drainable Serializable

Public Member Functions

 CopyEngineChannel (CopyEngine *_ce, int cid)
 
virtual ~CopyEngineChannel ()
 
PortgetPort ()
 
std::string name ()
 
virtual Tick read (PacketPtr pkt)
 
virtual Tick write (PacketPtr pkt)
 
void channelRead (PacketPtr pkt, Addr daddr, int size)
 
void channelWrite (PacketPtr pkt, Addr daddr, int size)
 
DrainState drain () override
 Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight. More...
 
void drainResume () override
 Resume execution after a successful drain. 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 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 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)
 

Private Types

enum  ChannelState {
  Idle, AddressFetch, DescriptorFetch, DMARead,
  DMAWrite, CompletionWrite
}
 

Private Member Functions

void fetchDescriptor (Addr address)
 
void fetchDescComplete ()
 
void fetchNextAddr (Addr address)
 
void fetchAddrComplete ()
 
void readCopyBytes ()
 
void readCopyBytesComplete ()
 
void writeCopyBytes ()
 
void writeCopyBytesComplete ()
 
void writeCompletionStatus ()
 
void writeStatusComplete ()
 
void continueProcessing ()
 
void recvCommand ()
 
bool inDrain ()
 
void restartStateMachine ()
 

Private Attributes

DmaPort cePort
 
CopyEnginece
 
CopyEngineReg::ChanRegs cr
 
int channelId
 
CopyEngineReg::DmaDesccurDmaDesc
 
uint8_t * copyBuffer
 
bool busy
 
bool underReset
 
bool refreshNext
 
Addr lastDescriptorAddr
 
Addr fetchAddress
 
Tick latBeforeBegin
 
Tick latAfterCompletion
 
uint64_t completionDataReg
 
ChannelState nextState
 
EventFunctionWrapper fetchCompleteEvent
 
EventFunctionWrapper addrCompleteEvent
 
EventFunctionWrapper readCompleteEvent
 
EventFunctionWrapper writeCompleteEvent
 
EventFunctionWrapper statusCompleteEvent
 

Additional Inherited Members

- 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)
 
- Protected Member Functions inherited from Drainable
 Drainable ()
 
virtual ~Drainable ()
 
void signalDrainDone () const
 Signal that an object is drained. More...
 

Detailed Description

Definition at line 60 of file copy_engine.hh.

Member Enumeration Documentation

◆ ChannelState

Enumerator
Idle 
AddressFetch 
DescriptorFetch 
DMARead 
DMAWrite 
CompletionWrite 

Definition at line 81 of file copy_engine.hh.

Constructor & Destructor Documentation

◆ CopyEngineChannel()

CopyEngine::CopyEngineChannel::CopyEngineChannel ( CopyEngine _ce,
int  cid 
)

Definition at line 78 of file copy_engine.cc.

References fetchDescComplete().

◆ ~CopyEngineChannel()

CopyEngine::CopyEngineChannel::~CopyEngineChannel ( )
virtual

Definition at line 107 of file copy_engine.cc.

Member Function Documentation

◆ channelRead()

void CopyEngine::CopyEngineChannel::channelRead ( PacketPtr  pkt,
Addr  daddr,
int  size 
)

◆ channelWrite()

void CopyEngine::CopyEngineChannel::channelWrite ( PacketPtr  pkt,
Addr  daddr,
int  size 
)

◆ continueProcessing()

void CopyEngine::CopyEngineChannel::continueProcessing ( )
private

Definition at line 548 of file copy_engine.cc.

◆ drain()

DrainState CopyEngine::CopyEngineChannel::drain ( )
overridevirtual

Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight.

Draining is mostly used before forking and creating a check point.

This function notifies an object that it needs to drain its state.

If the object does not need further simulation to drain internal buffers, it returns DrainState::Drained and automatically switches to the Drained state. If the object needs more simulation, it returns DrainState::Draining and automatically enters the Draining state. Other return values are invalid.

Note
An object that has entered the Drained state can be disturbed by other objects in the system and consequently stop being drained. These perturbations are not visible in the drain state. The simulator therefore repeats the draining process until all objects return DrainState::Drained on the first call to drain().
Returns
DrainState::Drained if the object is drained at this point in time, DrainState::Draining if it needs further simulation.

Implements Drainable.

Definition at line 637 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, Drained, Draining, and Running.

◆ drainResume()

void CopyEngine::CopyEngineChannel::drainResume ( )
overridevirtual

Resume execution after a successful drain.

Reimplemented from Drainable.

Definition at line 728 of file copy_engine.cc.

References DPRINTF.

◆ fetchAddrComplete()

void CopyEngine::CopyEngineChannel::fetchAddrComplete ( )
private

Definition at line 608 of file copy_engine.cc.

References DPRINTF.

◆ fetchDescComplete()

void CopyEngine::CopyEngineChannel::fetchDescComplete ( )
private

◆ fetchDescriptor()

void CopyEngine::CopyEngineChannel::fetchDescriptor ( Addr  address)
private

Definition at line 449 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, and MemCmd::ReadReq.

◆ fetchNextAddr()

void CopyEngine::CopyEngineChannel::fetchNextAddr ( Addr  address)
private

Definition at line 597 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, and MemCmd::ReadReq.

◆ getPort()

Port & CopyEngine::CopyEngineChannel::getPort ( )

Definition at line 130 of file copy_engine.cc.

◆ inDrain()

bool CopyEngine::CopyEngineChannel::inDrain ( )
private

◆ name()

std::string CopyEngine::CopyEngineChannel::name ( )
inline

Definition at line 97 of file copy_engine.hh.

References ce, channelId, csprintf(), and SimObject::name().

◆ read()

virtual Tick CopyEngine::CopyEngineChannel::read ( PacketPtr  pkt)
inlinevirtual

Definition at line 98 of file copy_engine.hh.

References panic.

◆ readCopyBytes()

void CopyEngine::CopyEngineChannel::readCopyBytes ( )
private

Definition at line 495 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, and MemCmd::ReadReq.

◆ readCopyBytesComplete()

void CopyEngine::CopyEngineChannel::readCopyBytesComplete ( )
private

Definition at line 505 of file copy_engine.cc.

References DPRINTF.

◆ recvCommand()

void CopyEngine::CopyEngineChannel::recvCommand ( )
private

Definition at line 136 of file copy_engine.cc.

References MipsISA::ce, panic, and Running.

◆ restartStateMachine()

void CopyEngine::CopyEngineChannel::restartStateMachine ( )
private

Definition at line 702 of file copy_engine.cc.

References panic.

◆ serialize()

void CopyEngine::CopyEngineChannel::serialize ( CheckpointOut cp) const
overridevirtual

Serialize an object.

Output an object's state into the current checkpoint section.

Parameters
cpCheckpoint state

Implements Serializable.

Definition at line 666 of file copy_engine.cc.

References arrayParamOut(), MipsISA::ce, SERIALIZE_ARRAY, and SERIALIZE_SCALAR.

◆ unserialize()

void CopyEngine::CopyEngineChannel::unserialize ( CheckpointIn cp)
overridevirtual

Unserialize an object.

Read an object's state from the current checkpoint section.

Parameters
cpCheckpoint state

Implements Serializable.

Definition at line 683 of file copy_engine.cc.

References arrayParamIn(), MipsISA::ce, UNSERIALIZE_ARRAY, and UNSERIALIZE_SCALAR.

◆ write()

virtual Tick CopyEngine::CopyEngineChannel::write ( PacketPtr  pkt)
inlinevirtual

Definition at line 100 of file copy_engine.hh.

References panic.

◆ writeCompletionStatus()

void CopyEngine::CopyEngineChannel::writeCompletionStatus ( )
private

Definition at line 577 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, and MemCmd::WriteReq.

◆ writeCopyBytes()

void CopyEngine::CopyEngineChannel::writeCopyBytes ( )
private

Definition at line 515 of file copy_engine.cc.

References MipsISA::ce, DPRINTF, and MemCmd::WriteReq.

◆ writeCopyBytesComplete()

void CopyEngine::CopyEngineChannel::writeCopyBytesComplete ( )
private

Definition at line 529 of file copy_engine.cc.

References CopyEngineReg::DESC_CTRL_CP_STS, and DPRINTF.

◆ writeStatusComplete()

void CopyEngine::CopyEngineChannel::writeStatusComplete ( )
private

Definition at line 590 of file copy_engine.cc.

References DPRINTF.

Member Data Documentation

◆ addrCompleteEvent

EventFunctionWrapper CopyEngine::CopyEngineChannel::addrCompleteEvent
private

Definition at line 119 of file copy_engine.hh.

◆ busy

bool CopyEngine::CopyEngineChannel::busy
private

Definition at line 70 of file copy_engine.hh.

◆ ce

CopyEngine* CopyEngine::CopyEngineChannel::ce
private

Definition at line 64 of file copy_engine.hh.

Referenced by name().

◆ cePort

DmaPort CopyEngine::CopyEngineChannel::cePort
private

Definition at line 63 of file copy_engine.hh.

◆ channelId

int CopyEngine::CopyEngineChannel::channelId
private

Definition at line 66 of file copy_engine.hh.

Referenced by name().

◆ completionDataReg

uint64_t CopyEngine::CopyEngineChannel::completionDataReg
private

Definition at line 79 of file copy_engine.hh.

◆ copyBuffer

uint8_t* CopyEngine::CopyEngineChannel::copyBuffer
private

Definition at line 68 of file copy_engine.hh.

◆ cr

CopyEngineReg::ChanRegs CopyEngine::CopyEngineChannel::cr
private

Definition at line 65 of file copy_engine.hh.

◆ curDmaDesc

CopyEngineReg::DmaDesc* CopyEngine::CopyEngineChannel::curDmaDesc
private

Definition at line 67 of file copy_engine.hh.

◆ fetchAddress

Addr CopyEngine::CopyEngineChannel::fetchAddress
private

Definition at line 74 of file copy_engine.hh.

◆ fetchCompleteEvent

EventFunctionWrapper CopyEngine::CopyEngineChannel::fetchCompleteEvent
private

Definition at line 115 of file copy_engine.hh.

◆ lastDescriptorAddr

Addr CopyEngine::CopyEngineChannel::lastDescriptorAddr
private

Definition at line 73 of file copy_engine.hh.

◆ latAfterCompletion

Tick CopyEngine::CopyEngineChannel::latAfterCompletion
private

Definition at line 77 of file copy_engine.hh.

◆ latBeforeBegin

Tick CopyEngine::CopyEngineChannel::latBeforeBegin
private

Definition at line 76 of file copy_engine.hh.

◆ nextState

ChannelState CopyEngine::CopyEngineChannel::nextState
private

Definition at line 90 of file copy_engine.hh.

◆ readCompleteEvent

EventFunctionWrapper CopyEngine::CopyEngineChannel::readCompleteEvent
private

Definition at line 123 of file copy_engine.hh.

◆ refreshNext

bool CopyEngine::CopyEngineChannel::refreshNext
private

Definition at line 72 of file copy_engine.hh.

◆ statusCompleteEvent

EventFunctionWrapper CopyEngine::CopyEngineChannel::statusCompleteEvent
private

Definition at line 131 of file copy_engine.hh.

◆ underReset

bool CopyEngine::CopyEngineChannel::underReset
private

Definition at line 71 of file copy_engine.hh.

◆ writeCompleteEvent

EventFunctionWrapper CopyEngine::CopyEngineChannel::writeCompleteEvent
private

Definition at line 127 of file copy_engine.hh.


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

Generated on Wed Sep 30 2020 14:02:22 for gem5 by doxygen 1.8.17