horn_process
Scoped launch/observation, per-process control, and child-only lifecycle.
On this page
- ProcessUsage (Record)
- ProcessPlacement (Record)
- ExecutionRegisters (Record)
- ExecutionExit (Record)
- ExecutionFpInfo (Record)
- ProcessInfo (Record)
- ProcessPage (Record)
- ProcessLaunch (Record)
- ProcessBootstrap (Record)
- ProcessError (EnumDecl)
- ExecutionReason (EnumDecl)
- ProcessState (EnumDecl)
- ProcessExit (EnumDecl)
- ProcessKernelObject (EnumDecl)
- ProcessExecution (Interface)
- ProcessLifecycle (Interface)
- ProcessControl (Interface)
- ProcessFactory (Interface)
- ProcessObserver (Interface)
- ProcessSelf (Object)
- ProcessObject (Object)
- ProcessHost (Object)
- ProcessCaps (CapSet)
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
| Variant | Value |
|---|---|
| Denied | 1 |
| State | 2 |
| Backend | 3 |
| Invalid | 4 |
| InvalidElf | 5 |
| InvalidAbi | 6 |
| Exhausted | 7 |
| QuotaExceeded | 8 |
| Quarantined | 9 |
| Stale | 10 |
ExecutionReason #
Base: u32
| Variant | Value |
|---|---|
| Interrupted | 0 |
| Syscall | 1 |
| PageFault | 2 |
| Exception | 3 |
| Budget | 4 |
ProcessState #
Base: u32
| Variant | Value |
|---|---|
| Created | 1 |
| Active | 2 |
| Stopping | 3 |
| Exited | 4 |
| Quarantined | 5 |
ProcessExit #
Base: u32
| Variant | Tag | Payload |
|---|---|---|
| Code | 0 | u32 |
| Killed | 1 | void |
ProcessKernelObject #
Base: u32
| Variant | Value |
|---|---|
| Endpoint | 1 |
| Notification | 2 |
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 |