mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
FreeBSD 11.4 kqueue_scan (sys/kern/kern_event.c) puts a reported level knote back at the tail of the queue and takes an EV_CLEAR or EV_DISPATCH knote off it, and knote_enqueue queues that one at the tail when it fires again. kevent moved a reported knote to the tail only while it stayed triggered, so a level socket or pipe knote and a re-fired EV_CLEAR or EV_DISPATCH knote kept their place and could starve later knotes when nevents is smaller than the number of ready ones. Now every reported knote that is not deleted moves to the tail.