horn_device

Read-only discovery. IDs select snapshot records, never device authority.

On this page

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

VariantValue
Invalid1
NotFound2
Exhausted3
Backend4
Unsupported5
Denied6
Busy7
Quarantined8

DevicePhase #

Base: u32

VariantValue
DiscoveryReady1

IommuState #

Base: u32

VariantValue
NotInitialized0
Enabled1

PciBarKind #

Base: u32

VariantValue
Io1
Memory322
Memory643
MemoryBelow1M4

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