From 2d3597c3a02f821bb364b8ecc23fc5949fca738d Mon Sep 17 00:00:00 2001 From: user Date: Thu, 16 Jul 2026 11:10:45 +0200 Subject: kill + ps: implement SYS_KILL (pid 1 immortal) and a ps tool - PCB gains PROC_PROG (running program id), set by exec, inherited on fork. - sys_kill(pid): reject pid 1 (immortal) and unknown/dead pids; mark the target zombie, reparent its children to init, wake its parent if blocked in wait; schedule away if a process kills itself. Reuses FindPcbByPid/ReparentToInit. - sys_ps(slot,buf)->{pid,state,prog}; sys_progname(id) via NameTable reverse lookup. NameTable gains sh/ps/kill. - libc: kill/psget/progname; tools ps (pid state cmd) and kill . - verified: ps lists sh(B)+ps(R); kill 1 refused; kill 42 fails. --- c/gbos.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'c/gbos.h') diff --git a/c/gbos.h b/c/gbos.h index fa926fd..5f22a5a 100644 --- a/c/gbos.h +++ b/c/gbos.h @@ -38,4 +38,7 @@ unsigned char wait(void); void setin(unsigned char fd); /* redirect stdin ($FF=console) */ void setout(unsigned char fd); /* redirect stdout ($FF=console) */ unsigned char lookup(const char *name); /* command name -> program id */ +unsigned char kill(unsigned char pid); /* terminate a pid (1 is immortal)*/ +unsigned char psget(unsigned char slot, unsigned char *buf); /* {pid,state,prog}*/ +void progname(unsigned char id, char *buf); /* id -> name */ #endif -- cgit v1.3.1-sl0p