Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Loading...
Searching...
No Matches
amp_uio_device.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Commercial license available
3// © Concepts 1996–2026 Miroslav Šotek. All rights reserved.
4// © Code 2020–2026 Miroslav Šotek. All rights reserved.
5// ORCID: 0009-0009-3560-0851
6// Contact: www.anulum.li | protoscience@anulum.li
7// Loop Timing Witness — separate Linux AMP mailbox and fabric ownership
8
12
13#ifndef WITNESS_AMP_UIO_DEVICE_H
14#define WITNESS_AMP_UIO_DEVICE_H
15#include "uio_device.h"
16extern "C" {
18}
19
20namespace witness {
22struct AmpUioMap {
23 std::uint32_t index;
24 std::uint64_t address, bytes;
25 std::string name;
26};
27
30 int descriptor = -1;
31 void *registers = nullptr, *telemetry = nullptr;
32 std::size_t register_bytes = 0, telemetry_bytes = 0;
33 std::uint64_t shared = 0;
35 void close() noexcept;
37 std::size_t offset(std::uint64_t address) const;
38
39 public:
41 AmpUioDevice(const UioIdentity &identity, const AmpUioMap &fabric, const AmpUioMap &mailbox);
44 AmpUioDevice(const AmpUioDevice &) = delete;
45 AmpUioDevice &operator=(const AmpUioDevice &) = delete;
47 std::uint64_t time() const;
49 void advance(std::uint64_t nanoseconds);
51 ProtocolReply read(std::uint8_t address);
53 ProtocolReply write(std::uint8_t address, std::uint32_t value, std::uint8_t strobes);
55 std::uint32_t read_memory32(std::uint64_t address);
57 void write_memory32(std::uint64_t address, std::uint32_t value);
58};
59} // namespace witness
72
73#endif
std::uint64_t time() const
ProtocolReply write(std::uint8_t address, std::uint32_t value, std::uint8_t strobes)
void write_memory32(std::uint64_t address, std::uint32_t value)
void advance(std::uint64_t nanoseconds)
ProtocolReply read(std::uint8_t address)
AmpUioDevice(const UioIdentity &identity, const AmpUioMap &fabric, const AmpUioMap &mailbox)
std::uint32_t read_memory32(std::uint64_t address)
std::uint32_t index
std::uint64_t bytes
std::uint64_t address