Files

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.')
}