#ifndef AGILA_PORTS_H #define AGILA_PORTS_H #include /* Host demonstration ABI v0: single-threaded, trusted caller identities. * Not a syscall API. receive requires a valid writable pointer or NULL. * A handle is a generation-checked reference, not an unforgeable capability. * create returns 0 for invalid owner or exhausted capacity. */ enum agila_status { AGILA_OK=0, AGILA_INVALID_HANDLE=1, AGILA_DENIED=2, AGILA_FULL=3, AGILA_EMPTY=4, AGILA_EXHAUSTED=5, AGILA_INVALID_ARGUMENT=6 }; uint32_t agila_port_create(uint32_t owner); int agila_port_allow_sender(uint32_t handle,uint32_t owner,uint32_t sender); int agila_port_revoke_sender(uint32_t handle,uint32_t owner,uint32_t sender); int agila_port_send(uint32_t handle,uint32_t caller,uint32_t value); int agila_port_receive(uint32_t handle,uint32_t caller,uint32_t *value); int agila_port_close(uint32_t handle,uint32_t caller); #endif