On Wed, Oct 18, 2017 at 11:22:01AM +0200, Martin Pieuchot wrote: > Diff below is the last version of my kqueue diff to allow grabbing the > solock() and possibly sleeping, inside kqueue_scan().
I wonder why you don't call knote_release() when calling knote_drop(). Another thread could sleep in knote_acquire() and never get a wakeup. I think there should be a call to knote_release() from knote_drop() just before freeing it. Then other threads wake up and can continue. Why is knote_release() not a void function? I did run all regress tests with your diff, everything passes. Btw, I have added a link to my regress page where you can see the diffs in /usr/src when I did not run the tests with a snapshot. http://bluhm.genua.de/regress/results/regress.html bluhm