summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorgreen <green@FreeBSD.org>2000-05-17 01:16:11 +0000
committergreen <green@FreeBSD.org>2000-05-17 01:16:11 +0000
commitb987a44176b0842184c50b2b8bef55a7e0e762a9 (patch)
tree3c72a035562df7584f2535daaa38b2e28b948dd8 /sys/kern
parent28fde4831e337e9ba71dec7b314ca3b3e7c51fdf (diff)
downloadFreeBSD-src-b987a44176b0842184c50b2b8bef55a7e0e762a9.zip
FreeBSD-src-b987a44176b0842184c50b2b8bef55a7e0e762a9.tar.gz
Put the wait(2) exit status in "data" for NOTE_EXIT kevents.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_event.c5
-rw-r--r--sys/kern/kern_exit.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index c22b248..46c8f26 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -264,6 +264,11 @@ filt_proc(struct knote *kn, long hint)
if (event == NOTE_EXIT) {
kn->kn_status |= KN_DETACHED;
kn->kn_flags |= (EV_EOF | EV_ONESHOT);
+ /*
+ * Return the 16 bits of the wait(2) value.
+ */
+ if (kn->kn_sfflags & NOTE_EXIT)
+ kn->kn_data = (intptr_t)hint & 0xffff;
return (1);
}
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 9115f97..0b16060 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -307,9 +307,10 @@ exit1(p, rv)
switchticks = ticks;
/*
- * notify interested parties of our demise.
+ * Notify interested parties of our demise. Pass the lower (only)
+ * 16 bits of our exit code along with it.
*/
- KNOTE(&p->p_klist, NOTE_EXIT);
+ KNOTE(&p->p_klist, NOTE_EXIT | (rv & 0xffff));
/*
* Notify parent that we're gone. If parent has the PS_NOCLDWAIT
OpenPOWER on IntegriCloud