diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-07-27 10:15:26 +0000 |
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-07-27 10:15:26 +0000 |
| commit | 2bacbbecb165dd761ea7ec2fc35630db61508cdf (patch) | |
| tree | d95ffb95fef0fc0a03e1992a882def84223c540f /sys/kern/sys_procdesc.c | |
| parent | 407b7bcc93862fe0c026e254bac8ec0e8318e7e6 (diff) | |
kqueue: Add NOTE_REAP
Add a NOTE_REAP event for EVFILTER_PROC which provides a notification
when the process is reaped.
MFC after: 1 week
Sponsored by: Klara, Inc.
Sponsored by: NetApp, Inc.
Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D58313
Diffstat (limited to 'sys/kern/sys_procdesc.c')
| -rw-r--r-- | sys/kern/sys_procdesc.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/sys_procdesc.c b/sys/kern/sys_procdesc.c index 862b59262d0c..608771b9f38c 100644 --- a/sys/kern/sys_procdesc.c +++ b/sys/kern/sys_procdesc.c @@ -507,11 +507,14 @@ procdesc_kqops_event(struct knote *kn, long hint) if ((kn->kn_sfflags & event) != 0) kn->kn_fflags |= kn->kn_sfflags & event; + /* Report exit status */ + if ((kn->kn_fflags & NOTE_EXIT) != 0) + kn->kn_data = pd->pd_xstat; + /* Process is gone, so flag the event as finished. */ - if ((event & NOTE_EXIT) != 0) { + if ((event & NOTE_REAP) != 0 || + ((event & NOTE_EXIT) != 0 && (kn->kn_sfflags & NOTE_REAP) == 0)) { kn->kn_flags |= EV_EOF | EV_ONESHOT; - if (kn->kn_fflags & NOTE_EXIT) - kn->kn_data = pd->pd_xstat; if (kn->kn_fflags == 0) kn->kn_flags |= EV_DROP; return (1); |
