From bb4f468b73c8a888bec1e5b2ba7f1575ab7f8456 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 16 Jul 2026 11:15:12 +0200 Subject: jobs: background execution (&), non-blocking reap, spin demo - sys_reap: nohang reap of a finished zombie child (-> pid or 0). - shell: 'cmd &' launches in the background (prints [pid], no wait); reaps finished jobs at the prompt ([pid done]). Foreground now waits for its own child specifically (loops wait(), reporting bg completions meanwhile) so kill reports the right pid. - spin: a process that yields forever - a target for ps/kill. - verified: spin &; ps shows it; kill removes just that one; immortal init; self-finishing bg worker reaped with [pid done]. --- src/programs.asm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/programs.asm') diff --git a/src/programs.asm b/src/programs.asm index f21d40b..e83d29e 100644 --- a/src/programs.asm +++ b/src/programs.asm @@ -94,6 +94,9 @@ ProgPs: SECTION "prog_kill", ROMX[$4000], BANK[19] ProgKill: INCBIN "c/kill.bin" +SECTION "prog_spin", ROMX[$4000], BANK[20] +ProgSpin: + INCBIN "c/spin.bin" ; ----------------------------------------------------------------------------- ; PROG_SH (bank 3) - the shell, now written in C (c/sh.c): parses >/ program id, searched by sys_lookup. @@ -214,4 +219,6 @@ NameTable:: db PROG_PS db "kill", 0 db PROG_KILL + db "spin", 0 + db PROG_SPIN db 0 -- cgit v1.3.1-sl0p