30 lines
1.0 KiB
V
30 lines
1.0 KiB
V
module main
|
|
#flag -I @VMODROOT/include
|
|
#flag -L @VMODROOT/build/lib
|
|
#flag -lagila_host
|
|
#include "agila_ports.h"
|
|
fn C.agila_port_create(u32) u32
|
|
fn C.agila_port_allow_sender(u32,u32,u32) int
|
|
fn C.agila_port_revoke_sender(u32,u32,u32) int
|
|
fn C.agila_port_send(u32,u32,u32) int
|
|
fn C.agila_port_receive(u32,u32,&u32) int
|
|
fn C.agila_port_close(u32,u32) int
|
|
fn main() {
|
|
owner := u32(10)
|
|
worker := u32(20)
|
|
port := C.agila_port_create(owner)
|
|
assert port != 0
|
|
assert C.agila_port_send(port,worker,42) == 2 // denied until owner grants
|
|
assert C.agila_port_allow_sender(port,owner,worker) == 0
|
|
assert C.agila_port_send(port,worker,42) == 0
|
|
mut value := u32(0)
|
|
assert C.agila_port_receive(port,owner,&value) == 0
|
|
assert value == 42
|
|
assert C.agila_port_revoke_sender(port,owner,worker) == 0
|
|
assert C.agila_port_send(port,worker,7) == 2
|
|
assert C.agila_port_close(port,owner) == 0
|
|
assert C.agila_port_send(port,owner,7) == 1
|
|
println('ADA_V_PORTS_OK value=${value}')
|
|
println('Host ABI demo: caller IDs are trusted inputs; no process isolation is claimed.')
|
|
}
|