gem5 v24.0.0.0
|
DMA callback class. More...
#include <dma_device.hh>
Public Member Functions | |
virtual const std::string | name () const |
DrainState | drain () override |
DmaPort ensures that all oustanding DMA accesses have completed before it finishes draining. | |
Event * | getChunkEvent () |
Request a chunk event. | |
Public Member Functions inherited from gem5::Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. | |
virtual void | notifyFork () |
Notify a child process of a fork. | |
Protected Member Functions | |
virtual | ~DmaCallback ()=default |
virtual void | process ()=0 |
Callback function invoked on completion of all chunks. | |
Protected Member Functions inherited from gem5::Drainable | |
Drainable () | |
virtual | ~Drainable () |
virtual void | drainResume () |
Resume execution after a successful drain. | |
void | signalDrainDone () const |
Signal that an object is drained. | |
Protected Attributes | |
int | count = 0 |
Private Member Functions | |
void | chunkComplete () |
Called by DMA engine completion event on each chunk completion. | |
DMA callback class.
Allows one to register for a callback event after a sequence of (potentially non-contiguous) DMA transfers on a DmaPort completes. Derived classes must implement the process() method and use getChunkEvent() to allocate a callback event for each participating DMA.
Definition at line 275 of file dma_device.hh.
|
protectedvirtualdefault |
|
inlineprivate |
Called by DMA engine completion event on each chunk completion.
Since the object may delete itself here, callers should not use the object pointer after calling this function.
Definition at line 310 of file dma_device.hh.
References count, process(), and gem5::Drainable::signalDrainDone().
Referenced by getChunkEvent().
|
inlineoverridevirtual |
DmaPort ensures that all oustanding DMA accesses have completed before it finishes draining.
However, DmaChunkEvents scheduled with a delay might still be sitting on the event queue. Therefore, draining is not complete until count is 0, which ensures that all outstanding DmaChunkEvents associated with this DmaCallback have fired.
Implements gem5::Drainable.
Definition at line 288 of file dma_device.hh.
References count, gem5::Drained, and gem5::Draining.
|
inline |
Request a chunk event.
Chunks events should be provided to each DMA request that wishes to participate in this DmaCallback.
Definition at line 328 of file dma_device.hh.
References chunkComplete(), count, and name().
Referenced by gem5::DmaVirtDevice::dmaVirt().
|
inlinevirtual |
Definition at line 278 of file dma_device.hh.
Referenced by getChunkEvent().
|
protectedpure virtual |
Callback function invoked on completion of all chunks.
Implemented in gem5::DmaVirtDevice::DmaVirtCallback< T >.
Referenced by chunkComplete().
|
protected |
Definition at line 294 of file dma_device.hh.
Referenced by chunkComplete(), drain(), and getChunkEvent().