Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Toggle main menu visibility
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
19
namespace
witness {
21
struct
UioIdentity
{
22
std::string
device
,
name
,
version
;
23
std::uint32_t
map
;
24
std::uint64_t
physical_address
;
25
};
26
28
class
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);
45
~UioDevice
();
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
witness::UioDevice::time
std::uint64_t time() const
witness::UioDevice::write
ProtocolReply write(std::uint8_t address, std::uint32_t data, std::uint8_t strobes)
witness::UioDevice::read
ProtocolReply read(std::uint8_t address)
witness::UioDevice::advance
void advance(std::uint64_t nanoseconds)
witness::UioDevice::~UioDevice
~UioDevice()
witness::UioDevice::wait_interrupt
bool wait_interrupt(std::uint64_t nanoseconds)
witness::UioDevice::last_interrupt_count
std::uint32_t last_interrupt_count() const
Definition
uio_device.h:60
witness::UioDevice::UioDevice
UioDevice(const UioIdentity &identity)
process_protocol.h
witness::ProtocolReply
Definition
process_protocol.h:29
witness::UioIdentity
Definition
uio_device.h:21
witness::UioIdentity::version
std::string version
Definition
uio_device.h:22
witness::UioIdentity::device
std::string device
Definition
uio_device.h:22
witness::UioIdentity::physical_address
std::uint64_t physical_address
Definition
uio_device.h:24
witness::UioIdentity::map
std::uint32_t map
Definition
uio_device.h:23
witness::UioIdentity::name
std::string name
Definition
uio_device.h:22
runtime
linux
uio_device.h
Generated by
1.18.0