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 |
||
---|---|---|
.. | ||
atf | ||
colldef | ||
dict | ||
doc | ||
dtrace | ||
examples | ||
i18n | ||
info | ||
man | ||
me | ||
misc | ||
mk | ||
mklocale | ||
monetdef | ||
msgdef | ||
numericdef | ||
security | ||
sendmail | ||
skel | ||
snmp | ||
syscons | ||
tabset | ||
termcap | ||
timedef | ||
xml | ||
xsl | ||
zoneinfo | ||
Makefile | ||
Makefile.inc |