SYSMON_TASKQ(9) | Kernel Developer's Manual | SYSMON_TASKQ(9) |
sysmon_taskq
—
#include
<dev/sysmon/sysmon_taskq.h>
void
sysmon_task_queue_preinit
(void);
void
sysmon_task_queue_init
(void);
void
sysmon_task_queue_fini
(void);
int
sysmon_task_queue_sched
(u_int
pri, void (*func)(void
*), void *arg);
void
sysmon_task_queue_barrier
(u_int
pri);
sysmon_taskq
provides a simple
general purpose task queue. It can be used to run callbacks that require
thread context, but do not warrant the use of a more fine-grained solution.
Although the intended usage is related to the context of system
monitoring and power management, also other comparable functions are
suitable for sysmon_taskq
.
sysmon_task_queue_preinit
(). Before actual usage, a
machine-dependent procedure should finish the initialization by calling
sysmon_task_queue_init
(). This will create a kernel
thread that can be later halted by
sysmon_task_queue_fini
(). All scheduled tasks are
executed before the queue is halted.
The sysmon_task_queue_sched
() function
enqueues func to be executed at the priority
pri. If pri is 0, the scheduled
function will be placed as the last element in the queue. The single
argument passed to func is specified by
arg.
The sysmon_task_queue_barrier
() function
waits for the completion of all tasks at pri or lower
currently queued at the time of the call.
sysmon_task_queue_sched
()
returns 0. Otherwise, the following error values are returned:
EINVAL
]ENOMEM
]January 24, 2010 | NetBSD 10.1 |