cvs commit: src/sys/kern kern_event.c src/sys/sys eventvar.h

Alfred Perlstein alfred at freebsd.org
Wed Jul 14 11:44:45 PDT 2004


* Robert Watson <rwatson at FreeBSD.org> [040714 07:43] wrote:
> 
> On Wed, 14 Jul 2004, Alfred Perlstein wrote:
> 
> >   Log:
> >   Make FIOASYNC, FIOSETOWN and FIOGETOWN work on kqueues.
> 
> Have you tried testing this on a kqueue used to monitor signals?  I'd draw
> your particular attention to the following newly enabled code path:
> 
> pgsigio() -> psignal() -> tdsignal() -> do_tdsignal() -> KNOTE() ->
>   knote() -> KNOTE_ACTIVATE() -> knote_enqueue() -> kqueue_wakeup() ->
>   pgsigio()
> 
> It strikes me that adding sigio support to kqueue opens a massive can of
> worms, not least of which is how you prevent the above from causing the
> system to panic, not to mention how you handle locking in what is
> otherwise a set of leaf functions in kqueue.  I'd like it if you could
> back this out until locking for kqueue is resolved, as while this is no
> doubt a useful feature, having the locking working is much more useful to
> us for 5.3.

I'm sure that was a fun panic to hit. :)

I can fix this by setting a "sigio in progress" on the kqeue and
not calling pgsigio() while one is in progress.

As far as the locking, we can address that when locking for kqueues
are done, with the idea that SIGIO _should_ work for kqueues.

Do we have this on the plate?  Or are you stalling my work based
simply on wishful thinking? :)

-- 
- Alfred Perlstein
- Research Engineering Development Inc.
- email: bright at mu.org cell: 408-480-4684


More information about the cvs-all mailing list