Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Loading...
Searching...
No Matches
witness::AmpUioDevice Class Reference

#include <amp_uio_device.h>

Public Member Functions

 AmpUioDevice (const UioIdentity &identity, const AmpUioMap &fabric, const AmpUioMap &mailbox)
 ~AmpUioDevice ()
 AmpUioDevice (const AmpUioDevice &)=delete
AmpUioDevice & operator= (const AmpUioDevice &)=delete
std::uint64_t time () const
void advance (std::uint64_t nanoseconds)
ProtocolReply read (std::uint8_t address)
ProtocolReply write (std::uint8_t address, std::uint32_t value, std::uint8_t strobes)
std::uint32_t read_memory32 (std::uint64_t address)
void write_memory32 (std::uint64_t address, std::uint32_t value)

Detailed Description

One exclusive IRQ-free UIO owner for fabric configuration/drain and the reserved mailbox.

Definition at line 29 of file amp_uio_device.h.

Constructor & Destructor Documentation

◆ AmpUioDevice()

witness::AmpUioDevice::AmpUioDevice ( const UioIdentity & identity,
const AmpUioMap & fabric,
const AmpUioMap & mailbox )

Verify original named map extents and absence of a Linux-owned controller IRQ.

◆ ~AmpUioDevice()

witness::AmpUioDevice::~AmpUioDevice ( )

Release mappings and the advisory lock without acknowledging firmware or its IRQ.

Member Function Documentation

◆ advance()

void witness::AmpUioDevice::advance ( std::uint64_t nanoseconds)

Sleep while the independently running dedicated controller retains interrupt ownership.

◆ read()

ProtocolReply witness::AmpUioDevice::read ( std::uint8_t address)

Read a real full little-endian fabric register word.

◆ read_memory32()

std::uint32_t witness::AmpUioDevice::read_memory32 ( std::uint64_t address)

Read a firmware-owned slot using ordered aligned mapped-memory loads.

◆ time()

std::uint64_t witness::AmpUioDevice::time ( ) const

Observe monotonic host nanoseconds for bounded polling, never fabric timing.

◆ write()

ProtocolReply witness::AmpUioDevice::write ( std::uint8_t address,
std::uint32_t value,
std::uint8_t strobes )

Permit only host configuration, START and FIFO drain; refuse controller writes.

◆ write_memory32()

void witness::AmpUioDevice::write_memory32 ( std::uint64_t address,
std::uint32_t value )

Write only the consumer cursor or logger readiness/final acknowledgement.


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