diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-04 10:49:41 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-04 10:49:41 -0400 |
| commit | 8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (patch) | |
| tree | fbaba69059c2e28d5098da4c9be357c38e406626 /proc/process.h | |
| parent | 465cba0c00bfc5d89bf10ce353b0adf40bdc098d (diff) | |
| download | jove-kernel-8d48bbd9746228b63bafa5f92b621998d7d8f3d3.tar.gz jove-kernel-8d48bbd9746228b63bafa5f92b621998d7d8f3d3.tar.bz2 jove-kernel-8d48bbd9746228b63bafa5f92b621998d7d8f3d3.zip | |
move init fully to proc. remove init pages prealloc. prepare for scheduling
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; |
