> On Oct 13, 2023, at 11:48 AM, Andrew Doran <a...@netbsd.org> wrote: > > Module Name: src > Committed By: ad > Date: Fri Oct 13 18:48:56 UTC 2023 > > Modified Files: > src/sys/kern: kern_condvar.c kern_sleepq.c > src/sys/rump/librump/rumpkern: locks.c locks_up.c > src/sys/sys: condvar.h lwp.h > > Log Message: > Add cv_fdrestart() (better name suggestions welcome):
Oooooof. I’d suggest doing something like: void cv_broadcast_cb(kcondvar_t *cv, void (*callback)(lwp_t *)) { . . . } . . . to make this a generic mechanism, rather that something so specialized for the few call sites that need this behavior. > > Like cv_broadcast(), but make any LWPs that share the same file descriptor > table as the caller return ERESTART when resuming. Used to dislodge LWPs > waiting for I/O that prevent a file descriptor from being closed, without > upsetting access to the file (not descriptor) made from another direction. > > > To generate a diff of this commit: > cvs rdiff -u -r1.59 -r1.60 src/sys/kern/kern_condvar.c > cvs rdiff -u -r1.83 -r1.84 src/sys/kern/kern_sleepq.c > cvs rdiff -u -r1.86 -r1.87 src/sys/rump/librump/rumpkern/locks.c > cvs rdiff -u -r1.12 -r1.13 src/sys/rump/librump/rumpkern/locks_up.c > cvs rdiff -u -r1.17 -r1.18 src/sys/sys/condvar.h > cvs rdiff -u -r1.227 -r1.228 src/sys/sys/lwp.h > > Please note that diffs are not public domain; they are subject to the > copyright notices on the relevant files. > -- thorpej