git: kqueue: Only allow one thread to register event to a kqueue
Sepherosa Ziehau
sephe at crater.dragonflybsd.org
Fri Mar 4 06:22:32 PST 2016
commit 5c672d8fd9ab0898aec2a11f3386f222bb38d6c9
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date: Fri Mar 4 22:15:54 2016 +0800
kqueue: Only allow one thread to register event to a kqueue
This prevents various races on the registration path, if it
ever blocks (kq token will be released):
- Kqueue hash table creation; the malloc(M_WAIT) could block.
- Install a new event. Holding the token protect the klist could block.
Since kqueue _should_ rarely be shared between threads, allowing one
thread to do the event registration to a kqueue can work well enough.
Summary of changes:
sys/kern/kern_event.c | 27 +++++++++++++++++++++++++++
sys/sys/eventvar.h | 2 ++
2 files changed, 29 insertions(+)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/5c672d8fd9ab0898aec2a11f3386f222bb38d6c9
--
DragonFly BSD source repository
More information about the Commits
mailing list