table of contents
| SELRECORD(9) | Kernel Developer's Manual | SELRECORD(9) | 
NAME¶
seldrain, selrecord,
  selwakeup —
SYNOPSIS¶
#include <sys/param.h>
#include <sys/selinfo.h>
void
  
  seldrain(struct
    selinfo *sip);
void
  
  selrecord(struct
    thread *td, struct
    selinfo *sip);
void
  
  selwakeup(struct
    selinfo *sip);
DESCRIPTION¶
seldrain(), selrecord() and
  selwakeup() are the three 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 later 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 occurred. 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.
seldrain() will flush the waiters queue on
    a specified object before its destruction. The object handling code must
    ensure that *sip cannot be used once
    seldrain() has been called.
The contents of *sip must be zeroed, such as
    by softc initialization, before any call to
    selrecord() or selwakeup(),
    otherwise a panic may occur. selwakeup() acquires
    and releases sellock and may acquire and release
    sched_lock. seldrain() could
    usually be just a wrapper for selwakeup(), but
    consumers should not generally rely on this feature.
SEE ALSO¶
poll(2), select(2)AUTHORS¶
This manual page was written by Chad David <davidc@FreeBSD.org> and Alfred Perlstein <alfred@FreeBSD.org>.| August 25, 2011 | Linux 4.9.0-9-amd64 |