Add "fast" versions of macros and functions to taskqueue(9) API
description: TASKQUEUE_FAST_DEFINE(9), TASKQUEUE_FAST_DEFINE_THREAD(9), taskqueue_create_fast(9). They deal with taskqueues intended for use in fast interrupt handlers. Approved by: cognet (mentor) Reviewed by: keramida
This commit is contained in:
parent
f9a4e9e4a9
commit
2eb30874af
@ -28,7 +28,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd May 19, 2005
|
.Dd June 10, 2008
|
||||||
.Dt TASKQUEUE 9
|
.Dt TASKQUEUE 9
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -55,6 +55,8 @@ struct task {
|
|||||||
.Ed
|
.Ed
|
||||||
.Ft struct taskqueue *
|
.Ft struct taskqueue *
|
||||||
.Fn taskqueue_create "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
|
.Fn taskqueue_create "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
|
||||||
|
.Ft struct taskqueue *
|
||||||
|
.Fn taskqueue_create_fast "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn taskqueue_free "struct taskqueue *queue"
|
.Fn taskqueue_free "struct taskqueue *queue"
|
||||||
.Ft struct taskqueue *
|
.Ft struct taskqueue *
|
||||||
@ -72,7 +74,9 @@ struct task {
|
|||||||
.Fn TASK_INIT "struct task *task" "int priority" "task_fn_t *func" "void *context"
|
.Fn TASK_INIT "struct task *task" "int priority" "task_fn_t *func" "void *context"
|
||||||
.Fn TASKQUEUE_DECLARE "name"
|
.Fn TASKQUEUE_DECLARE "name"
|
||||||
.Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
|
.Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
|
||||||
.Fn TASKQUEUE_DEFINE_THREAD "name"
|
.Fn TASKQUEUE_DEFINE_THREAD "name"
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE_THREAD "name"
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
These functions provide a simple interface for asynchronous execution
|
These functions provide a simple interface for asynchronous execution
|
||||||
of code.
|
of code.
|
||||||
@ -102,6 +106,10 @@ thread).
|
|||||||
The memory location where the thread identity is recorded is used
|
The memory location where the thread identity is recorded is used
|
||||||
to signal the service thread(s) to terminate--when this value is set to
|
to signal the service thread(s) to terminate--when this value is set to
|
||||||
zero and the thread is signaled it will terminate.
|
zero and the thread is signaled it will terminate.
|
||||||
|
If the queue is intended for use in fast interrupt handlers
|
||||||
|
.Fn taskqueue_create_fast
|
||||||
|
should be used in place of
|
||||||
|
.Fn taskqueue_create .
|
||||||
.Pp
|
.Pp
|
||||||
The function
|
The function
|
||||||
.Fn taskqueue_free
|
.Fn taskqueue_free
|
||||||
@ -188,11 +196,13 @@ are simply copied into the task structure fields and the
|
|||||||
.Va ta_pending
|
.Va ta_pending
|
||||||
field is cleared.
|
field is cleared.
|
||||||
.Pp
|
.Pp
|
||||||
Three macros
|
Five macros
|
||||||
.Fn TASKQUEUE_DECLARE "name" ,
|
.Fn TASKQUEUE_DECLARE "name" ,
|
||||||
.Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init" ,
|
.Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init" ,
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE "name" "enqueue" "context" "init" ,
|
||||||
and
|
and
|
||||||
.Fn TASKQUEUE_DEFINE_THREAD "name"
|
.Fn TASKQUEUE_DEFINE_THREAD "name"
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE_THREAD "name"
|
||||||
are used to declare a reference to a global queue, to define the
|
are used to declare a reference to a global queue, to define the
|
||||||
implementation of the queue, and declare a queue that uses its own thread.
|
implementation of the queue, and declare a queue that uses its own thread.
|
||||||
The
|
The
|
||||||
@ -219,6 +229,16 @@ macro defines a new taskqueue with its own kernel thread to serve tasks.
|
|||||||
The variable
|
The variable
|
||||||
.Vt struct taskqueue *taskqueue_name
|
.Vt struct taskqueue *taskqueue_name
|
||||||
is used to enqueue tasks onto the queue.
|
is used to enqueue tasks onto the queue.
|
||||||
|
.Pp
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE
|
||||||
|
and
|
||||||
|
.Fn TASKQUEUE_FAST_DEFINE_THREAD
|
||||||
|
act just like
|
||||||
|
.Fn TASKQUEUE_DEFINE
|
||||||
|
and
|
||||||
|
.Fn TASKQUEUE_DEFINE_THREAD
|
||||||
|
respectively but taskqueue is created with
|
||||||
|
.Fn taskqueue_create_fast .
|
||||||
.Ss Predefined Task Queues
|
.Ss Predefined Task Queues
|
||||||
The system provides four global taskqueues,
|
The system provides four global taskqueues,
|
||||||
.Va taskqueue_fast ,
|
.Va taskqueue_fast ,
|
||||||
@ -295,6 +315,3 @@ There is a similar facility called tqueue in the Linux kernel.
|
|||||||
.Sh AUTHORS
|
.Sh AUTHORS
|
||||||
This manual page was written by
|
This manual page was written by
|
||||||
.An Doug Rabson .
|
.An Doug Rabson .
|
||||||
.Sh BUGS
|
|
||||||
There is no
|
|
||||||
.Fn taskqueue_create_fast .
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user