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. --- src/programs.asm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/programs.asm') diff --git a/src/programs.asm b/src/programs.asm index 1a7092e..f21d40b 100644 --- a/src/programs.asm +++ b/src/programs.asm @@ -88,6 +88,12 @@ ProgSave: SECTION "prog_rm", ROMX[$4000], BANK[17] ProgRm: INCBIN "c/rm.bin" +SECTION "prog_ps", ROMX[$4000], BANK[18] +ProgPs: + INCBIN "c/ps.bin" +SECTION "prog_kill", ROMX[$4000], BANK[19] +ProgKill: + INCBIN "c/kill.bin" ; ----------------------------------------------------------------------------- ; PROG_SH (bank 3) - the shell, now written in C (c/sh.c): parses >/ program id, searched by sys_lookup. @@ -198,4 +208,10 @@ NameTable:: db PROG_SAVE db "rm", 0 db PROG_RM + db "sh", 0 + db PROG_SH + db "ps", 0 + db PROG_PS + db "kill", 0 + db PROG_KILL db 0 -- cgit v1.3.1-sl0p