summaryrefslogtreecommitdiffstats
path: root/proc/process.h
diff options
context:
space:
mode:
Diffstat (limited to 'proc/process.h')
-rw-r--r--proc/process.h11
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