diff options
author | will <will@FreeBSD.org> | 2013-03-23 15:11:53 +0000 |
---|---|---|
committer | will <will@FreeBSD.org> | 2013-03-23 15:11:53 +0000 |
commit | 5d3a27c7434a37ae901743cd13abde0f4c0adbb1 (patch) | |
tree | 3516b04234c4782387f7269ca92ee0f247a47c15 /share/termcap | |
parent | a4c39d4efd7c5dc2ef3bbb4e70449a7d6b673edc (diff) | |
download | FreeBSD-src-5d3a27c7434a37ae901743cd13abde0f4c0adbb1.zip FreeBSD-src-5d3a27c7434a37ae901743cd13abde0f4c0adbb1.tar.gz |
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
Diffstat (limited to 'share/termcap')
0 files changed, 0 insertions, 0 deletions