How should a driver shutdown a taskqueue on detach?

Ryan Stone rysto32 at gmail.com
Tue Jul 7 23:52:57 UTC 2015


On Thu, Jul 2, 2015 at 3:08 AM, Konstantin Belousov <kostikbel at gmail.com>
wrote:

> Having taskqueue_enqueue() which could silently (?) not enqueue the given
> task is huge and IMO risky change to the KPI.  If doing it, I think
> that there should be a new function to enqueue, which is allowed to
> fail, unlike taskqueue_enqueue().
>
> BTW, the man page for taskqueue(9) is wrong, taskqueue_enqueue(9)
> always succeed now and always returns 0 (ignoring the ushort overflow).
>

That's fair, but I feel that a new enqueue function would be rather
intrusive for existing drivers.  Maybe we should attach this from a
different angle.  How about a taskqueue_quiesce() function, which must be
called on a blocked taskqueue (by taskqueue_block() ).  taskqueue_quiesce()
would block until the taskqueue's thread has stopped running.  Then I can
do:

taskqueue_block()
taskqueue_quiesce()
taskqueue_cancel()
//...
taskqueue_free()


More information about the freebsd-current mailing list