NAME
sysmon_taskq —
general purpose system
monitoring task queue
SYNOPSIS
#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);
DESCRIPTION
The machine-independent
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.
FUNCTIONS
The necessary internal data structures are initialized during system startup by
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() 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.
RETURN VALUES
Upon successful completion,
sysmon_task_queue_sched() returns
0. Otherwise, the following error values are returned:
-
-
- [
EINVAL
]
- An invalid parameter was specified.
-
-
- [
ENOMEM
]
- There was not enough memory.
SEE ALSO
queue(3),
kthread(9),
workqueue(9)
AUTHORS
Jason R. Thorpe
<
thorpej@NetBSD.org>