taskqueue - Major overhaul
authorAlex Hornung <ahornung@gmail.com>
Wed, 30 Sep 2009 07:14:45 +0000 (08:14 +0100)
committerAlex Hornung <ahornung@gmail.com>
Wed, 30 Sep 2009 07:15:55 +0000 (08:15 +0100)
commit8619d09d62c9d1c47f3056da6f06808f032f8e1b
tree7119cf3254be9c90bfacc7aebf6944a219fe6bfe
parentb9356bf6ba7f0d263be6983fa60244a2ec82b8dc
taskqueue - Major overhaul

* Move taskqueue from critical sections to fine-grained locking with
  lockmgr for the list of taskqueues (could be changed to spinlocks) and
  spinlock for the task queue in each taskqueue itself.

* Add a taskqueue_swi_mp which is for mpsafe tasks. Unlike taskqueue_swi
  the mplock is not acquired when tasks are run.

* Add FreeBSD's taskqueue_start_threads and family, allowing for
  per-taskqueue threads.

* Add FreeBSD's taskqueue_block and taskqueue unblock.

* Out of necessity add a register_swi_mp, which registers a swi marked
  as MPSAFE.

Partially-Obtained-from: FreeBSD
sys/kern/kern_intr.c
sys/kern/subr_taskqueue.c
sys/sys/interrupt.h
sys/sys/taskqueue.h