save process exit status in kevent NOTE_EXIT

Jared Yanovich phirerunner at comcast.net
Fri Nov 17 18:56:05 UTC 2006


Any reason why this may be a bad idea?  I think it'd be useful
for a pwait(1)-like utility (from Solaris).

Index: lib/libc/sys/kqueue.2
===================================================================
RCS file: /home/ncvs/src/lib/libc/sys/kqueue.2,v
retrieving revision 1.44
diff -u -p -r1.44 kqueue.2
--- lib/libc/sys/kqueue.2	17 Sep 2006 21:27:34 -0000	1.44
+++ lib/libc/sys/kqueue.2	17 Nov 2006 18:50:48 -0000
@@ -364,6 +364,8 @@ The events to monitor are:
 .Bl -tag -width XXNOTE_TRACKERR
 .It NOTE_EXIT
 The process has exited.
+The exit status will be stored in
+.Va data .
 .It NOTE_FORK
 The process has called
 .Fn fork .
Index: sys/kern/kern_event.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_event.c,v
retrieving revision 1.106
diff -u -p -r1.106 kern_event.c
--- sys/kern/kern_event.c	25 Sep 2006 01:29:48 -0000	1.106
+++ sys/kern/kern_event.c	17 Nov 2006 18:50:49 -0000
@@ -396,6 +396,7 @@ filt_proc(struct knote *kn, long hint)
 		if (!(kn->kn_status & KN_DETACHED))
 			knlist_remove_inevent(&p->p_klist, kn);
 		kn->kn_flags |= (EV_EOF | EV_ONESHOT);
+		kn->kn_data = kn->kn_ptr.p_proc->p_xstat;
 		kn->kn_ptr.p_proc = NULL;
 		return (1);
 	}


More information about the freebsd-hackers mailing list