diff options
Diffstat (limited to 'proc')
| -rw-r--r-- | proc/process.c | 18 | ||||
| -rw-r--r-- | proc/process.h | 10 |
2 files changed, 26 insertions, 2 deletions
diff --git a/proc/process.c b/proc/process.c index 3687c8a..55737f6 100644 --- a/proc/process.c +++ b/proc/process.c @@ -6,3 +6,21 @@ process_current(void) { return processor_pcb(((processor_t*)processor_current())); } + +pid_t +pcb_getpid(pcb_t *pcb) +{ + return ((struct pcb_expected_header*)pcb)->pid; +} + +jove_obj_t* +pcb_rootdir(pcb_t *pcb) +{ + return ((struct pcb_expected_header*)pcb)->rootdir; +} + +jove_obj_t* +pcb_pagedir(pcb_t *pcb) +{ + return ((struct pcb_expected_header*)pcb)->pagedir; +} diff --git a/proc/process.h b/proc/process.h index 5099476..2757f6f 100644 --- a/proc/process.h +++ b/proc/process.h @@ -21,6 +21,10 @@ struct pcb_expected_header { struct rbtree_node tree_node; struct process_control_block *sched_next; + + pid_t pid; + jove_obj_t *rootdir; + jove_obj_t *pagedir; }; typedef struct process_control_block pcb_t; @@ -29,10 +33,12 @@ 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); +pid_t pcb_getpid(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; +jove_obj_t *pcb_pagedir(pcb_t *pcb); + +extern pcb_t *pcb_tree; #endif |
