summaryrefslogtreecommitdiffstats
path: root/proc/process.h
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-04 10:49:41 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-04 10:49:41 -0400
commit8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (patch)
treefbaba69059c2e28d5098da4c9be357c38e406626 /proc/process.h
parent465cba0c00bfc5d89bf10ce353b0adf40bdc098d (diff)
downloadjove-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.h27
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;