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