The Pedigree Project 0.1
Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
GicIts Class Reference
+ Collaboration diagram for GicIts:

Classes

struct  Mapping
 

Public Member Functions

bool initialise (const VirtMsiController &controller, uintptr_t redistributor, uint64_t redistributorPhysical)
 
bool ready () const
 
uint64_t messageAddress () const
 
bool mapDevice (size_t slot, uint32_t deviceId, uint32_t lpi)
 
bool mapDeviceGroup (const size_t *slots, size_t count, uint32_t deviceId)
 
bool mappingActive (size_t slot) const
 
bool unmapDevice (size_t slot)
 
bool setEnabled (uint32_t lpi, bool enabled)
 

Static Public Attributes

static constexpr uint32_t FirstLpi = 8192
 
static constexpr size_t MaxMappings = 16
 

Private Member Functions

bool allocateAligned (MemoryRegion &region, size_t size, size_t alignment, uint64_t &physical, uint8_t *&virtualAddress)
 
bool setupBaser (uint32_t type, MemoryRegion &region, size_t requiredEntries)
 
bool send (uint64_t word0, uint64_t word1, uint64_t word2)
 
bool sync ()
 
void releaseTables ()
 

Private Attributes

MemoryRegion m_DeviceTable
 
MemoryRegion m_CollectionTable
 
MemoryRegion m_CommandQueue
 
MemoryRegion m_Properties
 
MemoryRegion m_Pending
 
Spinlock m_MappingLock
 
Spinlock m_CommandLock
 
Mapping m_Mappings [MaxMappings]
 
uintptr_t m_Base
 
uintptr_t m_Redistributor
 
uint64_t m_PhysicalBase
 
uint64_t m_Target
 
uint8_t * m_CommandVirtual
 
uint8_t * m_PropertyVirtual
 
size_t m_CommandWrite
 
size_t m_CommandSize
 
uint32_t m_DeviceLimit
 
uint32_t m_EventBits
 
bool m_Ready
 

Detailed Description

Definition at line 10 of file GicIts.h.

Constructor & Destructor Documentation

◆ GicIts()

GicIts::GicIts ( )

Definition at line 55 of file GicIts.cc.

Member Function Documentation

◆ allocateAligned()

bool GicIts::allocateAligned ( MemoryRegion &  region,
size_t  size,
size_t  alignment,
uint64_t &  physical,
uint8_t *&  virtualAddress 
)
private

Definition at line 84 of file GicIts.cc.

◆ initialise()

bool GicIts::initialise ( const VirtMsiController &  controller,
uintptr_t  redistributor,
uint64_t  redistributorPhysical 
)

Definition at line 238 of file GicIts.cc.

◆ mapDevice()

bool GicIts::mapDevice ( size_t  slot,
uint32_t  deviceId,
uint32_t  lpi 
)

Definition at line 334 of file GicIts.cc.

◆ mapDeviceGroup()

bool GicIts::mapDeviceGroup ( const size_t *  slots,
size_t  count,
uint32_t  deviceId 
)

Definition at line 338 of file GicIts.cc.

◆ mappingActive()

bool GicIts::mappingActive ( size_t  slot) const

Definition at line 394 of file GicIts.cc.

◆ messageAddress()

uint64_t GicIts::messageAddress ( ) const

Definition at line 80 of file GicIts.cc.

◆ ready()

bool GicIts::ready ( ) const

Definition at line 76 of file GicIts.cc.

◆ releaseTables()

void GicIts::releaseTables ( )
private

Definition at line 194 of file GicIts.cc.

◆ send()

bool GicIts::send ( uint64_t  word0,
uint64_t  word1,
uint64_t  word2 
)
private

Definition at line 157 of file GicIts.cc.

◆ setEnabled()

bool GicIts::setEnabled ( uint32_t  lpi,
bool  enabled 
)

Definition at line 429 of file GicIts.cc.

◆ setupBaser()

bool GicIts::setupBaser ( uint32_t  type,
MemoryRegion &  region,
size_t  requiredEntries 
)
private

Definition at line 118 of file GicIts.cc.

◆ sync()

bool GicIts::sync ( )
private

Definition at line 190 of file GicIts.cc.

◆ unmapDevice()

bool GicIts::unmapDevice ( size_t  slot)

Definition at line 399 of file GicIts.cc.

Member Data Documentation

◆ FirstLpi

constexpr uint32_t GicIts::FirstLpi = 8192
staticconstexpr

Definition at line 12 of file GicIts.h.

◆ m_Base

uintptr_t GicIts::m_Base
private

Definition at line 49 of file GicIts.h.

◆ m_CollectionTable

MemoryRegion GicIts::m_CollectionTable
private

Definition at line 42 of file GicIts.h.

◆ m_CommandLock

Spinlock GicIts::m_CommandLock
private

Definition at line 47 of file GicIts.h.

◆ m_CommandQueue

MemoryRegion GicIts::m_CommandQueue
private

Definition at line 43 of file GicIts.h.

◆ m_CommandSize

size_t GicIts::m_CommandSize
private

Definition at line 56 of file GicIts.h.

◆ m_CommandVirtual

uint8_t* GicIts::m_CommandVirtual
private

Definition at line 53 of file GicIts.h.

◆ m_CommandWrite

size_t GicIts::m_CommandWrite
private

Definition at line 55 of file GicIts.h.

◆ m_DeviceLimit

uint32_t GicIts::m_DeviceLimit
private

Definition at line 57 of file GicIts.h.

◆ m_DeviceTable

MemoryRegion GicIts::m_DeviceTable
private

Definition at line 41 of file GicIts.h.

◆ m_EventBits

uint32_t GicIts::m_EventBits
private

Definition at line 58 of file GicIts.h.

◆ m_MappingLock

Spinlock GicIts::m_MappingLock
mutableprivate

Definition at line 46 of file GicIts.h.

◆ m_Mappings

Mapping GicIts::m_Mappings[MaxMappings]
private

Definition at line 48 of file GicIts.h.

◆ m_Pending

MemoryRegion GicIts::m_Pending
private

Definition at line 45 of file GicIts.h.

◆ m_PhysicalBase

uint64_t GicIts::m_PhysicalBase
private

Definition at line 51 of file GicIts.h.

◆ m_Properties

MemoryRegion GicIts::m_Properties
private

Definition at line 44 of file GicIts.h.

◆ m_PropertyVirtual

uint8_t* GicIts::m_PropertyVirtual
private

Definition at line 54 of file GicIts.h.

◆ m_Ready

bool GicIts::m_Ready
private

Definition at line 59 of file GicIts.h.

◆ m_Redistributor

uintptr_t GicIts::m_Redistributor
private

Definition at line 50 of file GicIts.h.

◆ m_Target

uint64_t GicIts::m_Target
private

Definition at line 52 of file GicIts.h.

◆ MaxMappings

constexpr size_t GicIts::MaxMappings = 16
staticconstexpr

Definition at line 13 of file GicIts.h.


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