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]. --- c/libc.s | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'c/libc.s') diff --git a/c/libc.s b/c/libc.s index bcc8199..2e2516b 100644 --- a/c/libc.s +++ b/c/libc.s @@ -187,3 +187,15 @@ _progname: ld c, #21 ; SYS_PROGNAME rst #0x30 ret + + .globl _yield, _reap + ;; void yield(void) +_yield: + ld c, #11 ; SYS_YIELD + rst #0x30 + ret + ;; unsigned char reap(void) -> A (reaped pid, or 0) +_reap: + ld c, #22 ; SYS_REAP + rst #0x30 + ret -- cgit v1.3.1-sl0p