diff options
Diffstat (limited to 'proc/process.h')
| -rw-r--r-- | proc/process.h | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/proc/process.h b/proc/process.h index 2757f6f..ed40a4f 100644 --- a/proc/process.h +++ b/proc/process.h @@ -3,12 +3,16 @@ #include "hal/obj.h" #include "lib/rbtree.h" - -typedef uintmax_t pid_t; +#include "api/process.h" enum pcb_state { - PCB_DEAD, PCB_READY, PCB_RUNNING, PCB_BLOCKED + _PCB_STATE_INVALID = 0, + PCB_STATE_DEAD, + PCB_STATE_READY, + PCB_STATE_RUNNING, + PCB_STATE_WAITING, + PCB_STATE_BLOCKED_MAIL }; struct pcb_mailbox @@ -20,11 +24,16 @@ struct pcb_mailbox struct pcb_expected_header { struct rbtree_node tree_node; - struct process_control_block *sched_next; + struct pcb_expected_header *sched_next; pid_t pid; jove_obj_t *rootdir; jove_obj_t *pagedir; + + enum pcb_state state; + intmax_t state_code; + + struct pcb_mailbox send, recv; }; typedef struct process_control_block pcb_t; @@ -32,12 +41,12 @@ typedef struct process_control_block pcb_t; jove_owned_obj_t *process_current(void); void pcb_new(pcb_t *pcb); -/*Returns the process ID of the passed PCB. */ -pid_t pcb_getpid(pcb_t *pcb); -/*Returns the root kernel object directory of this PCB. */ -jove_obj_t *pcb_rootdir(pcb_t *pcb); -jove_obj_t *pcb_pagedir(pcb_t *pcb); +pid_t pcb_getpid(pcb_t *pcb); +jove_obj_t *pcb_getrootdir(pcb_t *pcb); +jove_obj_t *pcb_getpagedir(pcb_t *pcb); +enum pcb_state pcb_getstate(pcb_t *pcb); +intmax_t pcb_getstatecode(pcb_t *pcb); extern pcb_t *pcb_tree; |
