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

poll(2), select(2)

AUTHORS

This manual page was written by Chad David <davidc@FreeB
SD.org> and
Alfred Perlstein <alfred@FreeBSD.org>.
BSD March 20, 2002
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout