will 5d3a27c743 Extend taskqueue(9) to enable per-taskqueue callbacks.
The scope of these callbacks is primarily to support actions that affect the
taskqueue's thread environments.  They are entirely optional, and
consequently are introduced as a new API: taskqueue_set_callback().

This interface allows the caller to specify that a taskqueue requires a
callback and optional context pointer for a given callback type.

The callback types included in this commit can be used to register a
constructor and destructor for thread-local storage using osd(9).  This
allows a particular taskqueue to define that its threads require a specific
type of TLS, without the need for a specially-orchestrated task-based
mechanism for startup and shutdown in order to accomplish it.

Two callback types are supported at this point:

- TASKQUEUE_CALLBACK_TYPE_INIT, called by every thread when it starts, prior
  to processing any tasks.
- TASKQUEUE_CALLBACK_TYPE_SHUTDOWN, called by every thread when it exits,
  after it has processed its last task but before the taskqueue is
  reclaimed.

While I'm here:

- Add two new macros, TQ_ASSERT_LOCKED and TQ_ASSERT_UNLOCKED, and use them
  in appropriate locations.
- Fix taskqueue.9 to mention taskqueue_start_threads(), which is a required
  interface for all consumers of taskqueue(9).

Reviewed by:	kib (all), eadler (taskqueue.9), brd (taskqueue.9)
Approved by:	ken (mentor)
Sponsored by:	Spectra Logic
MFC after:	1 month
2013-03-23 15:11:53 +00:00
..
2013-03-21 23:02:19 +00:00
2013-03-04 12:20:48 +00:00
MFC
2013-03-02 14:48:41 +00:00
2013-03-02 00:53:12 +00:00
2013-03-02 00:53:12 +00:00
2011-04-13 11:28:46 +00:00
MFC
2011-05-31 21:22:44 +00:00
2013-03-04 11:22:19 +00:00
2013-02-02 14:19:50 +00:00
2012-08-22 20:01:57 +00:00
2012-03-28 20:58:30 +00:00
2012-11-14 10:33:12 +00:00
2013-03-18 18:04:09 +00:00
2013-03-21 19:58:25 +00:00
2013-01-23 14:37:05 +00:00
2012-06-25 05:41:16 +00:00
2012-09-04 23:16:55 +00:00
2012-01-26 16:35:09 +00:00
2012-09-14 21:28:56 +00:00
2013-03-02 00:53:12 +00:00
2013-02-17 11:48:16 +00:00
2013-02-26 01:00:11 +00:00
2013-03-21 23:02:19 +00:00
2013-03-21 23:02:19 +00:00
2012-01-02 12:12:10 +00:00
2012-10-25 09:05:21 +00:00
2013-03-02 00:53:12 +00:00
2013-03-02 00:53:12 +00:00
2013-03-02 00:53:12 +00:00
MFC
2013-03-02 14:48:41 +00:00
MFC
2013-03-02 14:48:41 +00:00
MFC
2013-02-21 21:59:35 +00:00
2013-03-02 00:53:12 +00:00