On 03/15/2013 06:19 PM, Ryan Stone wrote:
On Fri, Mar 15, 2013 at 12:46 PM, Sebastian Huber
<sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>> wrote:

    Hello,

    I want to port the FreeBSD kqueue implementation to another operating
    system (RTEMS in this case) to improve the Erlang support.

    I have difficulties to understand the purpose of the kqueue_task.  This
    function runs asynchronously.  It obtains some locks and wakes up the
    normal kqueue channel if (kq->kq_state & KQ_TASKDRAIN) == KQ_TASKDRAIN.
      This state is only set in kqueue_close().  So most of the time the
    kqueue_task only obtains some locks, clears a flag (KQ_TASKSCHED) and
    releases the locks?


You missed the most important thing that it does: it calls KNOTE_LOCKED to wake
up any waiters sleeping on this event.  I suspect that it had to be done in a
separate task due to lock ordering problems with the kq_global lock.

Oh, I was blind.  This KNOTE_LOCKED looked more like an assertion to me.

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to