horn_device
Read-only discovery. IDs select snapshot records, never device authority.
On this page
- DeviceStatus (Record)
- PciAddress (Record)
- PciDevice (Record)
- PciBar (Record)
- PciResizableBar (Record)
- PciDeviceInfo (Record)
- DevicePage (Record)
- DeviceDma (Record)
- PciResources (Record)
- DeviceDmaLimits (Record)
- PlatformInfo (Record)
- MmioGrant (Record)
- DmaBacking (Record)
- IrqRoute (Record)
- DeviceError (EnumDecl)
- DevicePhase (EnumDecl)
- IommuState (EnumDecl)
- PciBarKind (EnumDecl)
- DeviceObserver (Interface)
- DeviceAssignment (Interface)
- DeviceControl (Interface)
- DeviceMmio (Interface)
- DeviceMapping (Interface)
- DevicePlatform (Interface)
- DeviceDiscovery (Object)
- DeviceMmioObject (Object)
- DeviceObject (Object)
- DeviceMappingObject (Object)
- DeviceHost (Object)
- DevicePlatformObject (Object)
- DeviceDriverCaps (CapSet)
Interfaces
DeviceObserver #
net.nhnn.horn.device.observe, version 1.0, default transport sync, strict
status #
status() → Result[DeviceStatus, DeviceError]
Transport: sync, label: 0x4bd9052129989
list #
list(after: u64) → Result[DevicePage, DeviceError]
Transport: sync, label: 0xb67717715de4a
info #
info(id: u64) → Result[PciDeviceInfo, DeviceError]
Transport: sync, label: 0xd52cb08e350f4
DeviceAssignment #
net.nhnn.horn.device.assign, version 1.0, default transport sync, strict
claim #
claim(id: u64) → Result[Cap[DeviceObject, move, ALL], DeviceError]
Transport: sync, label: 0x607402ca5d578
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
DeviceObject |
move | ALL |
DeviceControl #
net.nhnn.horn.device.control, version 1.0, default transport sync, strict
resources #
resources() → Result[PciResources, DeviceError]
Transport: sync, label: 0x25fc003185253
bar #
bar(index: u32, space: Cap[VmAddressSpaceObject, borrow, ALL]) → Result[Cap[VmMemoryObject, move, ALL], DeviceError]
Transport: sync, label: 0xb2e6c3834ea51
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
space |
VmAddressSpaceObject |
borrow | ALL |
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
VmMemoryObject |
move | ALL |
bar_window #
bar_window(index: u32, offset: u64, length: u64, space: Cap[VmAddressSpaceObject, borrow, ALL]) → Result[Cap[VmMemoryObject, move, ALL], DeviceError]
Transport: sync, label: 0x689f82fa78d5d
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
space |
VmAddressSpaceObject |
borrow | ALL |
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
VmMemoryObject |
move | ALL |
map #
map(memory: Cap[VmMemoryObject, borrow, ALL], offset: u64, length: u64, access: u32) → Result[DeviceDma, DeviceError]
Transport: sync, label: 0x203664b6a0a89
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
memory |
VmMemoryObject |
borrow | ALL |
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok.mapping |
DeviceMappingObject |
move | ALL |
dma_limits #
dma_limits() → Result[DeviceDmaLimits, DeviceError]
Transport: sync, label: 0x492e1ec121ee7
reserve_dma #
reserve_dma(length: u64, access: u32) → Result[DeviceDma, DeviceError]
Transport: sync, label: 0x9a309c7400e0
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok.mapping |
DeviceMappingObject |
move | ALL |
interrupt #
interrupt() → Result[Cap[sel4.Notification, move, ALL], DeviceError]
Transport: sync, label: 0x6adfc69cae2d3
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
sel4.Notification |
move | ALL |
interrupt_to #
interrupt_to(notification: Cap[sel4.Notification, borrow, ALL]) → Result[void, DeviceError]
Transport: sync, label: 0x961765ce1fe42
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
notification |
sel4.Notification |
borrow | ALL |
ack #
ack() → Result[void, DeviceError]
Transport: sync, label: 0x28f85e119fc93
activate #
activate() → Result[void, DeviceError]
Transport: sync, label: 0x9cfd0ac62ef98
close #
close() → Result[void, DeviceError]
Transport: sync, label: 0x8c1031c0ae6e4
map_bar_window #
map_bar_window(index: u32, offset: u64, length: u64, space: Cap[VmAddressSpaceObject, borrow, ALL]) → Result[Cap[DeviceMmioObject, move, ALL], DeviceError]
Transport: sync, label: 0x9c9a17fb206e1
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
space |
VmAddressSpaceObject |
borrow | ALL |
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
DeviceMmioObject |
move | ALL |
DeviceMmio #
net.nhnn.horn.device.mmio, version 1.0, default transport sync, strict
memory #
memory() → Result[Cap[VmMemoryObject, move, ALL], DeviceError]
Transport: sync, label: 0x98f08ef384492
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok |
VmMemoryObject |
move | ALL |
close #
close() → Result[void, DeviceError]
Transport: sync, label: 0x1e28fd04dc5d8
DeviceMapping #
net.nhnn.horn.device.mapping, version 1.0, default transport sync, strict
append #
append(memory: Cap[VmMemoryObject, borrow, ALL], offset: u64, length: u64) → Result[u64, DeviceError]
Transport: sync, label: 0x4ec46df98f243
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
memory |
VmMemoryObject |
borrow | ALL |
finish #
finish() → Result[void, DeviceError]
Transport: sync, label: 0x825298fa5bf09
close #
close() → Result[void, DeviceError]
Transport: sync, label: 0x8c6c5f95be0a3
DevicePlatform #
net.nhnn.horn.device.platform, version 1.0, default transport sync, strict
rsdp #
rsdp() → Result[List[u8, 36], DeviceError]
Transport: sync, label: 0xd0b4dc37d0b78
read #
read(address: u64, length: u32) → Result[List[u8, 256], DeviceError]
Transport: sync, label: 0x99441cf8aac31
ready #
ready() → Result[void, DeviceError]
Transport: sync, label: 0x4c1112ec1d24c
policy #
policy() → Result[PlatformInfo, DeviceError]
Transport: sync, label: 0xef82554d95deb
write #
write(address: u64, width: u32, value: u64) → Result[void, DeviceError]
Transport: sync, label: 0x70708eee0ad48
mmio #
mmio(space: Cap[VmAddressSpaceObject, borrow, ALL], address: u64, length: u64) → Result[MmioGrant, DeviceError]
Transport: sync, label: 0xefd4f5c404a01
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
space |
VmAddressSpaceObject |
borrow | ALL |
Result capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
result.Ok.memory |
VmMemoryObject |
move | ALL |
revoke_mmio #
revoke_mmio(token: u64) → Result[void, DeviceError]
Transport: sync, label: 0xef799b1142830
pin #
pin(memory: Cap[VmMemoryObject, borrow, ALL], offset: u64, length: u64, access: u32) → Result[DmaBacking, DeviceError]
Transport: sync, label: 0x3930f353278ba
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
memory |
VmMemoryObject |
borrow | ALL |
unpin #
unpin(token: u64) → Result[void, DeviceError]
Transport: sync, label: 0x924c022beb191
irq #
irq(sid: u32) → Result[IrqRoute, DeviceError]
Transport: sync, label: 0x15a10ca86792b
bind_irq #
bind_irq(token: u64, notification: Cap[sel4.Notification, borrow, ALL]) → Result[void, DeviceError]
Transport: sync, label: 0x548e699cca449
Request capabilities
| Path | Target | Transfer | Rights |
|---|---|---|---|
notification |
sel4.Notification |
borrow | ALL |
ack_irq #
ack_irq(token: u64) → Result[void, DeviceError]
Transport: sync, label: 0x9b4eb6280d75b
close_irq #
close_irq(token: u64) → Result[void, DeviceError]
Transport: sync, label: 0x29a74a8aa8c84
Objects
DeviceDiscovery #
DeviceDiscovery, transport sync
Implements: DeviceObserver
DeviceMmioObject #
DeviceMmioObject, transport sync
Implements: DeviceMmio
DeviceObject #
DeviceObject, transport sync
Implements: DeviceControl
DeviceMappingObject #
DeviceMappingObject, transport sync
Implements: DeviceMapping
DeviceHost #
DeviceHost, transport sync
Implements: DeviceObserver, DeviceAssignment, DeviceControl, DeviceMapping, DeviceMmio, ClockSource
DevicePlatformObject #
DevicePlatformObject, transport sync
Implements: DevicePlatform
Records
DeviceStatus #
Wire size: 12 bytes, alignment: 4, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
phase |
DevicePhase |
0 |
pci_devices |
u32 |
4 |
iommu |
IommuState |
8 |
PciAddress #
Wire size: 16 bytes, alignment: 4, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
segment |
u32 |
0 |
bus |
u32 |
4 |
device |
u32 |
8 |
function |
u32 |
12 |
PciDevice #
Wire size: 56 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
id |
u64 |
0 |
address |
PciAddress |
8 |
vendor_id |
u32 |
24 |
device_id |
u32 |
28 |
class_code |
u32 |
32 |
subclass |
u32 |
36 |
programming_interface |
u32 |
40 |
revision |
u32 |
44 |
header_type |
u32 |
48 |
PciBar #
Wire size: 24 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
index |
u32 |
0 |
kind |
PciBarKind |
4 |
address |
u64 |
8 |
prefetchable |
bool |
16 |
PciResizableBar #
Wire size: 24 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
index |
u32 |
0 |
supported_sizes |
u64 |
8 |
current_size |
u64 |
16 |
PciDeviceInfo #
Wire size: 384 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
device |
PciDevice |
0 |
command |
u32 |
56 |
interrupt_line |
u32 |
60 |
interrupt_pin |
u32 |
64 |
bars |
List[PciBar, 6] |
72 |
msi |
bool |
224 |
msix |
bool |
225 |
resizable_bars |
List[PciResizableBar, 6] |
232 |
DevicePage #
Wire size: 240 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
entries |
List[PciDevice, 4] |
0 |
next |
u64 |
232 |
DeviceDma #
Wire size: 8 bytes, alignment: 8, maximum capabilities: 1
| Field | Type | Byte offset |
|---|---|---|
mapping |
Cap[DeviceMappingObject, move, ALL] |
0 |
iova |
u64 |
0 |
PciResources #
Wire size: 336 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
address |
PciAddress |
0 |
configuration |
List[u32, 64] |
16 |
bar_lengths |
List[u64, 6] |
280 |
DeviceDmaLimits #
Wire size: 16 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
bytes |
u64 |
0 |
objects |
u32 |
8 |
chunk_bytes |
u32 |
12 |
PlatformInfo #
Wire size: 16 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
vtd |
bool |
0 |
ticks_per_us |
u64 |
8 |
MmioGrant #
Wire size: 8 bytes, alignment: 8, maximum capabilities: 1
| Field | Type | Byte offset |
|---|---|---|
token |
u64 |
0 |
memory |
Cap[VmMemoryObject, move, ALL] |
8 |
DmaBacking #
Wire size: 144 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
token |
u64 |
0 |
pages |
List[u64, 16] |
8 |
IrqRoute #
Wire size: 16 bytes, alignment: 8, maximum capabilities: 0
| Field | Type | Byte offset |
|---|---|---|
token |
u64 |
0 |
vector |
u32 |
8 |
Enums
DeviceError #
Base: u32
| Variant | Value |
|---|---|
| Invalid | 1 |
| NotFound | 2 |
| Exhausted | 3 |
| Backend | 4 |
| Unsupported | 5 |
| Denied | 6 |
| Busy | 7 |
| Quarantined | 8 |
DevicePhase #
Base: u32
| Variant | Value |
|---|---|
| DiscoveryReady | 1 |
IommuState #
Base: u32
| Variant | Value |
|---|---|
| NotInitialized | 0 |
| Enabled | 1 |
PciBarKind #
Base: u32
| Variant | Value |
|---|---|
| Io | 1 |
| Memory32 | 2 |
| Memory64 | 3 |
| MemoryBelow1M | 4 |
Capsets
DeviceDriverCaps #
| Field | Capability | Slot |
|---|---|---|
| vm | Cap[net.nhnn.horn.vm.factory, copy, ALL] |
1 |
| address_space | Cap[VmAddressSpaceObject, copy, ALL] |
2 |
| device | Cap[DeviceObject, copy, ALL] |
3 |
| wake | Cap[sel4.Notification, copy, ALL] |
4 |
| irq_signal | Cap[sel4.Notification, copy, ALL] |
5 |
| ready | Cap[sel4.Notification, copy, ALL] |
6 |
| stopped | Cap[sel4.Notification, copy, ALL] |
7 |
| lifecycle | Cap[sel4.Endpoint, copy, ALL] |
8 |
| reply | Cap[sel4.Reply, move, ALL] |
9 |
| supervisor | Cap[sel4.Endpoint, copy, ALL] |
10 |
| service | Cap[sel4.Endpoint, copy, ALL] |
11 |
| clock | Cap[ClockHost, copy, ALL] |
12 |
| alarm_signal | Cap[sel4.Notification, copy, ALL] |
13 |