#ifndef _JOVE_HAL_PROCESS_H #define _JOVE_HAL_PROCESS_H 1 #include "hal/obj.h" #include "lib/rbtree.h" typedef uintmax_t pid_t; enum pcb_state { PCB_DEAD, PCB_READY, PCB_RUNNING, PCB_BLOCKED }; struct pcb_mailbox { jove_obj_t *obj; pid_t pid; }; struct pcb_expected_header { struct rbtree_node tree_node; struct process_control_block *sched_next; }; 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_pid(pcb_t *pcb); /*Returns the root kernel object directory of this PCB. */ jove_obj_t *pcb_rootdir(pcb_t *pcb); extern pcb_t *_init_pcb; #endif