diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-09 16:50:13 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-09 16:50:13 -0400 |
| commit | 5ab3b18865eb813d433a6c0687dfa1f62a1b6055 (patch) | |
| tree | 8272e561d7d7a83780fc05e16722f29f58b18a28 /proc/process.h | |
| parent | cc23ea5a4b38807e79aceb23e6f43e965926618f (diff) | |
| download | jove-kernel-5ab3b18865eb813d433a6c0687dfa1f62a1b6055.tar.gz jove-kernel-5ab3b18865eb813d433a6c0687dfa1f62a1b6055.tar.bz2 jove-kernel-5ab3b18865eb813d433a6c0687dfa1f62a1b6055.zip | |
add ipc send/recv mechanism for kernel objects.
Diffstat (limited to 'proc/process.h')
| -rw-r--r-- | proc/process.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/proc/process.h b/proc/process.h index 950f63e..21dbf8d 100644 --- a/proc/process.h +++ b/proc/process.h @@ -7,14 +7,14 @@ struct pcb_mailbox { - jove_obj_t *obj; + jove_owned_obj_t *obj; pid_t pid; }; struct pcb_header { struct rbtree_node tree_node; - struct pcb_header *sched_next; + struct pcb_header *sched_prev, *sched_next; size_t size; pid_t pid; @@ -22,6 +22,7 @@ struct pcb_header enum pcb_state state; intmax_t state_code; + size_t block_until; struct pcb_mailbox send, recv; @@ -42,6 +43,9 @@ jove_obj_t *pcb_getrootdir(pcb_t *pcb); jove_owned_obj_t *pcb_getpagedir(jove_owned_obj_t *rootdir_obj); jove_owned_obj_t *pcb_getself(jove_owned_obj_t *rootdir_obj); +struct pcb_mailbox *pcb_getmail_send(pcb_t *pcb); +struct pcb_mailbox *pcb_getmail_recv(pcb_t *pcb); + enum pcb_state pcb_getstate(pcb_t *pcb); intmax_t pcb_getstatecode(pcb_t *pcb); @@ -50,6 +54,9 @@ void **pcb_getksp_ref(pcb_t *pcb); pcb_t *pcb_frompid(pid_t pid); +int pcb_send(pcb_t *pcb, pid_t target, jove_owned_obj_t *subject, size_t timeout); +int pcb_recv(pcb_t *pcb, pid_t target, jove_owned_obj_t *dest_obj, size_t timeout); + extern struct rbtree_node *pcb_tree; #endif |
