Push kernel lock down to dopselect() and doppoll() and unlock select(2),
pselect(2), poll(2) and ppoll(2).
select(2) and poll(2) are just wrappers for kqueue(2)/kevent(2) which
are already unlocked. They do temporary event queue initialization and
scan for this call only. The difference is in local data conversion
between select(2)/poll(2) and kevent(2) formats.
To separate possible signal related fallout, dosigsuspend() left under
the kernel lock. It will be taken only if optional signal mask arg
passed to pselect(2) or ppoll(2). dosigsuspend() will be unlocked later
with sigsuspend(2).
Discussed with claudio@ and kettenis@.
ok claudio@