Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Loading...
Searching...
No Matches
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 — Linux UIO ownership and ordered register access
8
12
13#ifndef WITNESS_UIO_DEVICE_H
14#define WITNESS_UIO_DEVICE_H
15
16#include "../process_protocol.h"
17#include <cstddef>
18
19namespace witness {
22 std::string device, name, version;
23 std::uint32_t map;
24 std::uint64_t physical_address;
25};
26
28class UioDevice {
29 int descriptor = -1;
30 void *mapping = nullptr;
31 std::size_t mapping_size = 0;
32 std::size_t register_offset = 0;
33 std::uint32_t interrupt_count = 0;
34 bool irq_managed = false;
35
37 void close() noexcept;
39 void irq_control(std::int32_t enabled);
40
41 public:
43 explicit UioDevice(const UioIdentity &identity);
46 UioDevice(const UioDevice &) = delete;
47 UioDevice &operator=(const UioDevice &) = delete;
48
50 std::uint64_t time() const;
52 ProtocolReply read(std::uint8_t address);
54 ProtocolReply write(std::uint8_t address, std::uint32_t data, std::uint8_t strobes);
56 void advance(std::uint64_t nanoseconds);
58 bool wait_interrupt(std::uint64_t nanoseconds);
60 std::uint32_t last_interrupt_count() const { return interrupt_count; }
61};
62} // namespace witness
78
79#endif
std::uint64_t time() const
ProtocolReply write(std::uint8_t address, std::uint32_t data, std::uint8_t strobes)
ProtocolReply read(std::uint8_t address)
void advance(std::uint64_t nanoseconds)
bool wait_interrupt(std::uint64_t nanoseconds)
std::uint32_t last_interrupt_count() const
Definition uio_device.h:60
UioDevice(const UioIdentity &identity)
std::string version
Definition uio_device.h:22
std::string device
Definition uio_device.h:22
std::uint64_t physical_address
Definition uio_device.h:24
std::uint32_t map
Definition uio_device.h:23