CIRCT 24.0.0git
Loading...
Searching...
No Matches
esi::services::MMIO Class Referenceabstract

#include <Services.h>

Inheritance diagram for esi::services::MMIO:
Collaboration diagram for esi::services::MMIO:

Classes

struct  RegionDescriptor
 Describe a region (slice) of MMIO space. More...
class  MMIORegion
 A "slice" of some parent MMIO space. More...

Public Member Functions

 MMIO (AcceleratorConnection &, const AppIDPath &idPath, const HWClientDetails &clients)
virtual ~MMIO ()=default
virtual uint64_t read (uint32_t addr) const =0
 Read a 64-bit value from the global MMIO space.
virtual void write (uint32_t addr, uint64_t data)=0
 Write a 64-bit value to the global MMIO space.
const std::map< AppIDPath, RegionDescriptor > & getRegions () const
 Get the regions of MMIO space that this service manages.
virtual Service * getChildService (Service::Type service, AppIDPath id={}, std::string implName={}, ServiceImplDetails details={}, HWClientDetails clients={}) override
 If the service is a MMIO service, return a region of the MMIO space which peers into ours.
virtual std::string getServiceSymbol () const override
virtual BundlePort * getPort (AppIDPath id, const BundleType *type) const override
 Get a MMIO region port for a particular region descriptor.
Public Member Functions inherited from esi::services::Service
 Service (AcceleratorConnection &conn)
virtual ~Service ()=default
AcceleratorConnection & getConnection () const

Static Public Attributes

static constexpr std::string_view StdName = "esi.service.std.mmio"

Protected Attributes

std::mutex mmioCmdLock
Protected Attributes inherited from esi::services::Service
AcceleratorConnection & conn

Private Attributes

std::map< AppIDPath, RegionDescriptor > regions
 MMIO base address table.

Additional Inherited Members

Public Types inherited from esi::services::Service
using Type = const std::type_info &

Detailed Description

Definition at line 138 of file Services.h.

Constructor & Destructor Documentation

◆ MMIO()

◆ ~MMIO()

virtual esi::services::MMIO::~MMIO ( )
virtualdefault

Member Function Documentation

◆ getChildService()

Service * MMIO::getChildService ( Service::Type service,
AppIDPath id = {},
std::string implName = {},
ServiceImplDetails details = {},
HWClientDetails clients = {} )
overridevirtual

If the service is a MMIO service, return a region of the MMIO space which peers into ours.

Reimplemented from esi::services::Service.

Definition at line 118 of file Services.cpp.

References esi::services::Service::getChildService(), MMIO(), and esi::services::Service::Service().

◆ getPort()

BundlePort * MMIO::getPort ( AppIDPath id,
const BundleType * type ) const
overridevirtual

Get a MMIO region port for a particular region descriptor.

Reimplemented from esi::services::Service.

Definition at line 94 of file Services.cpp.

References MMIO(), and regions.

◆ getRegions()

const std::map< AppIDPath, RegionDescriptor > & esi::services::MMIO::getRegions ( ) const
inline

Get the regions of MMIO space that this service manages.

Otherwise known as the base address table.

Definition at line 158 of file Services.h.

References regions.

Referenced by NB_MODULE().

◆ getServiceSymbol()

std::string MMIO::getServiceSymbol ( ) const
overridevirtual

Implements esi::services::Service.

Definition at line 91 of file Services.cpp.

References StdName.

◆ read()

virtual uint64_t esi::services::MMIO::read ( uint32_t addr) const
pure virtual

Read a 64-bit value from the global MMIO space.

Implemented in TraceMMIO.

Referenced by NB_MODULE().

◆ write()

virtual void esi::services::MMIO::write ( uint32_t addr,
uint64_t data )
pure virtual

Write a 64-bit value to the global MMIO space.

Implemented in TraceMMIO.

Referenced by NB_MODULE(), and esi::AcceleratorConnection::reset().

Member Data Documentation

◆ mmioCmdLock

std::mutex esi::services::MMIO::mmioCmdLock
mutableprotected

Definition at line 179 of file Services.h.

◆ regions

std::map<AppIDPath, RegionDescriptor> esi::services::MMIO::regions
private

◆ StdName

std::string_view esi::services::MMIO::StdName = "esi.service.std.mmio"
staticconstexpr

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