Date: Fri, 5 Nov 2010 20:00:37 +0100 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-arch@freebsd.org Cc: freebsd-current@freebsd.org, Matthew Fleming <mdf356@gmail.com>, freebsd-usb@freebsd.org, Weongyo Jeong <weongyo.jeong@gmail.com> Subject: Re: [RFC] Outline of USB process integration in the kernel taskqueue system Message-ID: <201011052000.37188.hselasky@c2i.net> In-Reply-To: <AANLkTimOTwtRQ_cF8WBYE6X7q0hfP37Gv7TKOXLY5k2U@mail.gmail.com> References: <201011012054.59551.hselasky@c2i.net> <201011051945.51393.hselasky@c2i.net> <AANLkTimOTwtRQ_cF8WBYE6X7q0hfP37Gv7TKOXLY5k2U@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 05 November 2010 19:48:05 Matthew Fleming wrote: > On Fri, Nov 5, 2010 at 11:45 AM, Hans Petter Selasky <hselasky@c2i.net> wrote: > > On Friday 05 November 2010 19:39:45 Matthew Fleming wrote: > >> True, but no taskqueue(9) code can handle that. Only the caller can > >> prevent a task from becoming enqueued again. The same issue exists > >> with taskqueue_drain(). > > > > I find that strange, because that means if I queue a task again while it > > is running, then I doesn't get run? Are you really sure? > > If a task is currently running when enqueued, the task struct will be > re-enqueued to the taskqueue. When that task comes up as the head of > the queue, it will be run again. Right, and the taskqueue_cancel has to cancel in that state to, but it doesn't because it only checks pending if !running() :-) ?? --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011052000.37188.hselasky>