Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Jul 2015 10:08:28 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Ryan Stone <rysto32@gmail.com>
Cc:        Jack Vogel <jfvogel@gmail.com>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: How should a driver shutdown a taskqueue on detach?
Message-ID:  <20150702070828.GH2080@kib.kiev.ua>
In-Reply-To: <CAFMmRNyeEp0gccRAspkJNT_tFWZvJWEczNitB8nCyOzSWKZBWA@mail.gmail.com>
References:  <CAFMmRNxLV0Uk9iT%2BU8rrPvn6aanSfEA6p577McM=_4xypaZr5w@mail.gmail.com> <CAFOYbckF7brPikTPaf%2BZhdm-R9d0WzygY9-eUxnrmi3p%2BBFBoQ@mail.gmail.com> <CAFMmRNzLL-K0kw_cj==kWpiocOcBLzxU2o6ONGaZRiv5tdSHxQ@mail.gmail.com> <20150701213241.GG2080@kib.kiev.ua> <CAFMmRNyeEp0gccRAspkJNT_tFWZvJWEczNitB8nCyOzSWKZBWA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jul 01, 2015 at 06:28:49PM -0400, Ryan Stone wrote:
> On Wed, Jul 1, 2015 at 5:32 PM, Konstantin Belousov <kostikbel@gmail.com>
> wrote:
> 
> > Do you mean, you want some KPI like
> >         boolean taskqueue_is_draining(struct taskqueue *p);
> > so that e.g. executed task could see if it is executing in the
> > shutdown state ?
> 
> 
> I'd prefer a KPI that stops a taskqueue from accepting new tasks (and drops
> attempts to enqueue on the floor).  Then I could do something like:
> 
> taskqueue_stop()
> disable_interrupts()
> taskqueue_drain_all()
> taskqueue_free()

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).



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150702070828.GH2080>