summaryrefslogtreecommitdiff
path: root/freebsd/sys/sys/taskqueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/sys/taskqueue.h')
-rw-r--r--freebsd/sys/sys/taskqueue.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/freebsd/sys/sys/taskqueue.h b/freebsd/sys/sys/taskqueue.h
index 6ac22e06..b4c7d208 100644
--- a/freebsd/sys/sys/taskqueue.h
+++ b/freebsd/sys/sys/taskqueue.h
@@ -35,10 +35,18 @@
#include <sys/queue.h>
#include <sys/_task.h>
+#include <sys/_callout.h>
struct taskqueue;
struct thread;
+struct timeout_task {
+ struct taskqueue *q;
+ struct task t;
+ struct callout c;
+ int f;
+};
+
/*
* A notification callback function which is called from
* taskqueue_enqueue(). The context argument is given in the call to
@@ -54,7 +62,15 @@ struct taskqueue *taskqueue_create(const char *name, int mflags,
int taskqueue_start_threads(struct taskqueue **tqp, int count, int pri,
const char *name, ...) __printflike(4, 5);
int taskqueue_enqueue(struct taskqueue *queue, struct task *task);
+int taskqueue_enqueue_timeout(struct taskqueue *queue,
+ struct timeout_task *timeout_task, int ticks);
+int taskqueue_cancel(struct taskqueue *queue, struct task *task,
+ u_int *pendp);
+int taskqueue_cancel_timeout(struct taskqueue *queue,
+ struct timeout_task *timeout_task, u_int *pendp);
void taskqueue_drain(struct taskqueue *queue, struct task *task);
+void taskqueue_drain_timeout(struct taskqueue *queue,
+ struct timeout_task *timeout_task);
void taskqueue_free(struct taskqueue *queue);
void taskqueue_run(struct taskqueue *queue);
void taskqueue_block(struct taskqueue *queue);
@@ -83,6 +99,12 @@ void taskqueue_thread_enqueue(void *context);
(task)->ta_context = (context); \
} while (0)
+void _timeout_task_init(struct taskqueue *queue,
+ struct timeout_task *timeout_task, int priority, task_fn_t func,
+ void *context);
+#define TIMEOUT_TASK_INIT(queue, timeout_task, priority, func, context) \
+ _timeout_task_init(queue, timeout_task, priority, func, context);
+
/*
* Declare a reference to a taskqueue.
*/