selrecord selwakeup - record and wakeup select requests
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
Fa 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.
The contents of
Fa *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
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |