diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-09 10:24:41 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-09 10:24:41 -0400 |
| commit | cc23ea5a4b38807e79aceb23e6f43e965926618f (patch) | |
| tree | 90142bb44186f4dad7bbd82d3d53655b835c822b /proc/process.h | |
| parent | 434ddcd907832b1febc7d70e4faa52109c7eb3bd (diff) | |
| download | jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.gz jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.bz2 jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.zip | |
add basic scheduler logic. rename init rootdir indexes
Diffstat (limited to 'proc/process.h')
| -rw-r--r-- | proc/process.h | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/proc/process.h b/proc/process.h index ed40a4f..950f63e 100644 --- a/proc/process.h +++ b/proc/process.h @@ -5,49 +5,51 @@ #include "lib/rbtree.h" #include "api/process.h" -enum pcb_state -{ - _PCB_STATE_INVALID = 0, - PCB_STATE_DEAD, - PCB_STATE_READY, - PCB_STATE_RUNNING, - PCB_STATE_WAITING, - PCB_STATE_BLOCKED_MAIL -}; - struct pcb_mailbox { jove_obj_t *obj; pid_t pid; }; -struct pcb_expected_header +struct pcb_header { struct rbtree_node tree_node; - struct pcb_expected_header *sched_next; + struct pcb_header *sched_next; + size_t size; pid_t pid; jove_obj_t *rootdir; - jove_obj_t *pagedir; enum pcb_state state; intmax_t state_code; struct pcb_mailbox send, recv; + + void *ksp; }; typedef struct process_control_block pcb_t; jove_owned_obj_t *process_current(void); -void pcb_new(pcb_t *pcb); +int pcb_new(jove_owned_obj_t *pcb_obj, size_t size, jove_owned_obj_t *rootdir_obj); +int _pcb_new_arch(pcb_t *pcb); + +pcb_t *pcb_frompid(pid_t pid); pid_t pcb_getpid(pcb_t *pcb); jove_obj_t *pcb_getrootdir(pcb_t *pcb); -jove_obj_t *pcb_getpagedir(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); + enum pcb_state pcb_getstate(pcb_t *pcb); intmax_t pcb_getstatecode(pcb_t *pcb); -extern pcb_t *pcb_tree; +void *pcb_getksp(pcb_t *pcb); +void **pcb_getksp_ref(pcb_t *pcb); + +pcb_t *pcb_frompid(pid_t pid); + +extern struct rbtree_node *pcb_tree; #endif |
