46#ifndef __DEV_PCI_COPY_ENGINE_HH__
47#define __DEV_PCI_COPY_ENGINE_HH__
54#include "params/CopyEngine.hh"
109 {
panic(
"CopyEngineChannel has no I/O access\n");}
111 {
panic(
"CopyEngineChannel has no I/O access\n"); }
155 const uint8_t& channel_count);
void unserialize(CheckpointIn &cp) override
Unserialize an object.
EventFunctionWrapper addrCompleteEvent
void restartStateMachine()
EventFunctionWrapper statusCompleteEvent
virtual Tick write(PacketPtr pkt)
copy_engine_reg::DmaDesc * curDmaDesc
void continueProcessing()
void writeStatusComplete()
void fetchNextAddr(Addr address)
void writeCopyBytesComplete()
virtual ~CopyEngineChannel()
CopyEngineChannel(CopyEngine *_ce, int cid)
EventFunctionWrapper readCompleteEvent
void fetchDescriptor(Addr address)
void channelWrite(PacketPtr pkt, Addr daddr, int size)
void readCopyBytesComplete()
void writeCompletionStatus()
EventFunctionWrapper writeCompleteEvent
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
copy_engine_reg::ChanRegs cr
void serialize(CheckpointOut &cp) const override
Serialize an object.
virtual Tick read(PacketPtr pkt)
void drainResume() override
Resume execution after a successful drain.
void channelRead(PacketPtr pkt, Addr daddr, int size)
EventFunctionWrapper fetchCompleteEvent
uint64_t completionDataReg
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void serialize(CheckpointOut &cp) const override
Serialize an object.
std::vector< CopyEngineChannel * > chan
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
CopyEngine(const Params ¶ms)
gem5::CopyEngine::CopyEngineStats copyEngineStats
copy_engine_reg::Regs regs
Interface for objects that might require draining before checkpointing.
virtual std::string name() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
PCI device, base implementation is only config space.
Ports are used to interface objects to each other.
Basic support for object serialization.
A vector of scalar stats.
DrainState
Object drain/handover states.
#define panic(...)
This implements a cprintf based panic() function.
const Params & params() const
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
const PortID InvalidPortID
std::ostream CheckpointOut
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
uint64_t Tick
Tick count type.
std::string csprintf(const char *format, const Args &...args)
Declaration of Statistics objects.
statistics::Vector bytesCopied
statistics::Vector copiesProcessed
CopyEngineStats(statistics::Group *parent, const uint8_t &channel_count)