Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


SYSMON_TASKQ(9)            Kernel Developer's Manual           SYSMON_TASKQ(9)

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);

     void
     sysmon_task_queue_barrier(u_int pri);

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() 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.

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>

NetBSD 10.99                   January 24, 2010                   NetBSD 10.99