horn_process

Scoped launch/observation, per-process control, and child-only lifecycle.

On this page

Interfaces

ProcessExecution #

net.nhnn.horn.process.execution, version 1.0, default transport sync, strict

execution_configure #

execution_configure(base: u64, bytes: u64, wake: Cap[sel4.Notification, borrow, ALL]) → Result[void, ProcessError]

Transport: sync, label: 0x7e0e09204afd5

Request capabilities
Path Target Transfer Rights
wake sel4.Notification borrow ALL

execution_space #

execution_space() → Result[u32, ProcessError]

Transport: sync, label: 0x1361671ff0f43

execution_admit #

execution_admit() → Result[u32, ProcessError]

Transport: sync, label: 0xee126962a005b

execution_destroy #

execution_destroy(space: u32) → Result[void, ProcessError]

Transport: sync, label: 0x59074fa22cd87

execution_map #

execution_map(space: u32, address: u64, pfn: u64, rights: u32) → Result[void, ProcessError]

Transport: sync, label: 0x3e14d7fe61f44

execution_unmap #

execution_unmap(space: u32, address: u64, bytes: u64) → Result[void, ProcessError]

Transport: sync, label: 0x3807bd7b1ac1c

execution_start #

execution_start(space: u32, registers: ExecutionRegisters) → Result[void, ProcessError]

Transport: sync, label: 0xa03c40cf0f40a

execution_fp_info #

execution_fp_info() → Result[ExecutionFpInfo, ProcessError]

Transport: sync, label: 0x74bb5631cfd85

execution_fp_read #

execution_fp_read(offset: u32, length: u32) → Result[List[u8, 256], ProcessError]

Transport: sync, label: 0x64ea92d776b8b

execution_fp_write #

execution_fp_write(offset: u32, data: List[u8, 256], commit: bool) → Result[void, ProcessError]

Transport: sync, label: 0x7de993c9d17a

execution_stop #

execution_stop() → Result[ExecutionExit, ProcessError]

Transport: sync, label: 0x9fd12f125eaf4

ProcessLifecycle #

net.nhnn.horn.process.lifecycle, version 1.0, default transport sync, strict

placement #

placement() → Result[ProcessPlacement, ProcessError]

Transport: sync, label: 0x9580973da313

info #

info() → Result[ProcessUsage, ProcessError]

Transport: sync, label: 0x8fe119bfe407a

exit #

exit(status: u32) → Result[void, ProcessError]

Transport: sync, label: 0x967d893013b41

ProcessControl #

net.nhnn.horn.process.control, version 1.0, default transport sync, strict

info #

info() → Result[ProcessInfo, ProcessError]

Transport: sync, label: 0xab4d861235f04

start #

start() → Result[void, ProcessError]

Transport: sync, label: 0x82057b567c8bc

set_limit #

set_limit(limit: u64) → Result[void, ProcessError]

Transport: sync, label: 0x2746763765442

suspend #

suspend() → Result[void, ProcessError]

Transport: sync, label: 0xabd4fefd955

kernel_object #

kernel_object(kind: ProcessKernelObject) → Result[Cap[sel4.AnyCap, move, ALL], ProcessError]

Transport: sync, label: 0x931b79cff6bd1

Result capabilities
Path Target Transfer Rights
result.Ok sel4.AnyCap move ALL

install #

install(source: Cap[sel4.CNode, borrow, ALL], source_bits: u32, source_slot: u32, target_slot: u32, badge: Option[u64], rights: u32) → Result[void, ProcessError]

Transport: sync, label: 0xe8cf7a3139965

Request capabilities
Path Target Transfer Rights
source sel4.CNode borrow ALL

fault_handler #

fault_handler(source: Cap[sel4.CNode, borrow, ALL], source_bits: u32, source_slot: u32) → Result[void, ProcessError]

Transport: sync, label: 0xd42f05ab4ee69

Request capabilities
Path Target Transfer Rights
source sel4.CNode borrow ALL

exit_signal #

exit_signal(notification: Cap[sel4.Notification, borrow, ALL]) → Result[void, ProcessError]

Transport: sync, label: 0xd5d88dbc8600e

Request capabilities
Path Target Transfer Rights
notification sel4.Notification borrow ALL

bind_notification #

bind_notification(notification: Cap[sel4.Notification, borrow, ALL]) → Result[void, ProcessError]

Transport: sync, label: 0xfbb40b81b25d8

Request capabilities
Path Target Transfer Rights
notification sel4.Notification borrow ALL

terminate #

terminate() → Result[void, ProcessError]

Transport: sync, label: 0xbb2482475db73

close #

close() → Result[void, ProcessError]

Transport: sync, label: 0xd72b761e611d

startup_context #

startup_context(descriptor: Cap[VmMemoryObject, borrow, ALL], length: u64) → Result[void, ProcessError]

Transport: sync, label: 0xdec512217f424

Request capabilities
Path Target Transfer Rights
descriptor VmMemoryObject borrow ALL

ProcessFactory #

net.nhnn.horn.process.factory, version 1.0, default transport sync, strict

launch #

launch(elf: Cap[VmMemoryObject, borrow, ALL], request: ProcessLaunch) → Result[Cap[ProcessObject, move, ALL], ProcessError]

Transport: sync, label: 0x35ec8008c4c21

Request capabilities
Path Target Transfer Rights
elf VmMemoryObject borrow ALL
Result capabilities
Path Target Transfer Rights
result.Ok ProcessObject move ALL

prepare #

prepare(elf: Cap[VmMemoryObject, borrow, ALL], request: ProcessLaunch, bootstrap: ProcessBootstrap) → Result[Cap[ProcessObject, move, ALL], ProcessError]

Transport: sync, label: 0xa046d29992951

Request capabilities
Path Target Transfer Rights
elf VmMemoryObject borrow ALL
Result capabilities
Path Target Transfer Rights
result.Ok ProcessObject move ALL

watch #

watch(notification: Cap[sel4.Notification, borrow, ALL]) → Result[void, ProcessError]

Transport: sync, label: 0xa5b4dc6d51d5a

Request capabilities
Path Target Transfer Rights
notification sel4.Notification borrow ALL

open #

open(id: u64) → Result[Cap[ProcessObject, move, ALL], ProcessError]

Transport: sync, label: 0x405e5a38169ed

Result capabilities
Path Target Transfer Rights
result.Ok ProcessObject move ALL

ProcessObserver #

net.nhnn.horn.process.observe, version 1.0, default transport sync, strict

list #

list(after: u64) → Result[ProcessPage, ProcessError]

Transport: sync, label: 0x3a34701c8aba6

Objects

ProcessSelf #

ProcessSelf, transport sync

Implements: ProcessLifecycle, ProcessExecution

ProcessObject #

ProcessObject, transport sync

Implements: ProcessControl

ProcessHost #

ProcessHost, transport sync

Implements: ProcessLifecycle, ProcessFactory, ProcessObserver, ProcessControl, ProcessExecution

Records

ProcessUsage #

Wire size: 24 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
limit_bytes u64 0
charged_bytes u64 8
quarantined_bytes u64 16

ProcessPlacement #

Wire size: 8 bytes, alignment: 4, maximum capabilities: 0

Field Type Byte offset
cpu u32 0
cpu_count u32 4

ExecutionRegisters #

Wire size: 160 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
ip u64 0
sp u64 8
flags u64 16
ax u64 24
bx u64 32
cx u64 40
dx u64 48
si u64 56
di u64 64
bp u64 72
r8 u64 80
r9 u64 88
r10 u64 96
r11 u64 104
r12 u64 112
r13 u64 120
r14 u64 128
r15 u64 136
fs u64 144
gs u64 152

ExecutionExit #

Wire size: 184 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
reason ExecutionReason 0
address u64 8
code u64 16
registers ExecutionRegisters 24

ExecutionFpInfo #

Wire size: 16 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
bytes u32 0
features u64 8

ProcessInfo #

Wire size: 128 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
id u64 0
name List[u8, 64] 8
state ProcessState 80
exit Option[ProcessExit] 88
ram ProcessUsage 104

ProcessPage #

Wire size: 528 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
entries List[ProcessInfo, 4] 0
next u64 520

ProcessLaunch #

Wire size: 80 bytes, alignment: 8, maximum capabilities: 0

Field Type Byte offset
name List[u8, 64] 0
ram_limit u64 72

ProcessBootstrap #

Wire size: 16 bytes, alignment: 4, maximum capabilities: 0

Field Type Byte offset
vm u32 0
address_space u32 4
lifecycle u32 8
reply u32 12

Enums

ProcessError #

Base: u32

VariantValue
Denied1
State2
Backend3
Invalid4
InvalidElf5
InvalidAbi6
Exhausted7
QuotaExceeded8
Quarantined9
Stale10

ExecutionReason #

Base: u32

VariantValue
Interrupted0
Syscall1
PageFault2
Exception3
Budget4

ProcessState #

Base: u32

VariantValue
Created1
Active2
Stopping3
Exited4
Quarantined5

ProcessExit #

Base: u32

VariantTagPayload
Code0u32
Killed1void

ProcessKernelObject #

Base: u32

VariantValue
Endpoint1
Notification2

Capsets

ProcessCaps #

Field Capability Slot
vm Cap[sel4.Endpoint, copy, ALL] 1
address_space Cap[sel4.Endpoint, copy, ALL] 2
lifecycle Cap[sel4.Endpoint, copy, ALL] 3
reply Cap[sel4.Reply, move, ALL] 4