selrecord(9)
NAME
selrecord, selwakeup - record and wakeup select requests
SYNOPSIS
#include <sys/param.h> #include <sys/selinfo.h> void selrecord(struct thread *td, struct selinfo *sip); void selwakeup(struct selinfo *sip);
DESCRIPTION
- selrecord() and selwakeup() are the two central functions
- used by
select(2), poll(2) and the objects that are being selected - on. They handle the task of recording which threads are waiting on which
- objects and
the waking of the proper threads when an event of interest - occurs on an
object. - selrecord() records that the calling thread is interested in
- events
related to a given object. If another thread is already - waiting on the
object a collision will be flagged in sip which will be lat - er dealt with
by selwakeup(). - selrecord() acquires and releases sellock.
- selwakeup() is called by the underlying object handling code
- in order to
notify any waiting threads that an event of interest has oc - curred. If a
collision has occurred, selwakeup() will increment nselcoll, - and broadcast on the global cv in order to wake all waiting threads
- so that they
can handle it. If the thread waiting on the object is not - currently
sleeping or the wait channel is not selwait, selwakeup() - will clear the
TDF_SELECT flag which should be noted by select(2) and - poll(2) when they
wake up. - selwakeup() acquires and releases sellock and may acquire
- and release
sched_lock.
SEE ALSO
AUTHORS
- This manual page was written by Chad David <davidc@FreeB
- SD.org> and
Alfred Perlstein <alfred@FreeBSD.org>. - BSD March 20, 2002