cvs commit: src/sys/kern kern_poll.c
Gleb Smirnoff
glebius at FreeBSD.org
Mon Sep 5 09:02:12 PDT 2005
glebius 2005-09-05 16:02:11 UTC
FreeBSD src repository
Modified files:
sys/kern kern_poll.c
Log:
Remove Giant mutex from polling(4) and use a separate poll_mtx(4)
instead. Detailed changelist:
o Add flags field to struct pollrec, to indicate that
are particular entry is being worked on.
o Define a macro PR_VALID() to check that a pollrec
is valid and pollable.
o Mark ISRs as mpsafe.
o ether_poll()
- Acquire poll_mtx while traversing pollrec array.
- Skip pollrecs, that are being worked on.
- Conditionally acquire Giant when entering handler.
o netisr_pollmore()
- Conditionally assert Giant.
- Acquire poll_mtx while working with statistics.
o netisr_poll()
- Conditionally assert Giant.
- Acquire poll_mtx while working with statistics
and traversing pollrec array.
o ether_poll_register(), ether_poll_deregister()
- Conditionally assert Giant.
- Acquire poll_mtx while working with pollrec array.
o poll_idle()
- Remove all strange manipulations with Giant.
In collaboration with: ru, pjd
In collaboration with: Oleg Bulyzhin <oleg rinet.ru>
In collaboration with: dima <_pppp mail.ru>
Revision Changes Path
1.21 +81 -38 src/sys/kern/kern_poll.c
More information about the cvs-src
mailing list