BXE: malloc fixups
[akaros.git] / kern / include / taskqueue.h
1 /* Copyright (c) 2015 Google Inc
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * Hacked BSD taskqueues.  In lieu of actually running a kproc or something that
6  * sleeps on a queue of tasks, we'll just blast out a kmsg.  We can always
7  * change the implementation if we need more control. */
8
9 #ifndef ROS_KERN_TASKQUEUE_H
10 #define ROS_KERN_TASKQUEUE_H
11
12 typedef void (*task_fn_t)(void *context, int pending);
13 struct taskqueue {};
14 struct task {
15         task_fn_t                                       ta_func;                /*      task handler */
16         void                                            *ta_context;    /*      argument for handler */
17 };
18
19 #define taskqueue_drain(x, y)
20 #define taskqueue_free(x)
21 #define taskqueue_create(a, b, c, d) ((struct taskqueue*)(0xcafebabe))
22 #define taskqueue_create_fast taskqueue_create
23 #define taskqueue_start_threads(a, b, c, d, e) (1)
24
25 int taskqueue_enqueue(struct taskqueue *queue, struct task *task);
26 /* We're already fast, no need for another ufnction! (sic) */
27 #define taskqueue_enqueue_fast taskqueue_enqueue
28 #define TASK_INIT(str, dummy, func, arg)                                       \
29         (str)->ta_func = func;                                                     \
30         (str)->ta_context = (void*)arg;
31
32 #endif /* ROS_KERN_TASKQUEUE_H */