| git.druid.rocks | index | druid520 | kaboom | src/ | kernel/ | exec.nsh |
src/kernel/exec.nsh
/* exec's public api -- see exec.nsc. */
i64 sys_exec(ptr path, u64 path_len, i64 argc, ptr argv);
void proc_init(void);
u64 kaboom_current_pid(void);
/* the process table -- see exec.nsc's own top note for what this
* honestly does and doesn't model, and for where the 10-slot size
* below actually comes from. virtfs.nsc (/proc/self, /proc/ps) is the
* only other reader. kaboom_proc_name is 10 flat 24-byte names, slot i
* at offset i*24 (no arrays-of-structs, same flattening fd.nsc/kfs.nsc
* already use elsewhere). */
global u64 kaboom_next_pid;
global i32 kaboom_proc_depth;
global u64 kaboom_proc_pid[10];
global i8 kaboom_proc_name[240];
global u64 kaboom_proc_pml4[10];
/* the boot-time cr3 (kmain.nsc sets this once, at kmain's very start,
* before anything else runs) -- sys_exec (exec.nsc) needs to restore
* this exact value whenever a depth-0 process returns, the same cross-
* file global idiom as kaboom_next_pid above: declared+defined here
* (an uninitialized global compiles to a .comm symbol, see jemit8.pl),
* assigned once in kmain.nsc, read here. */
global u64 kernel_cr3;