aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/tasklet.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-05-11 11:10:24 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-05-11 11:10:24 +0100
commita974b14d790ce883da98ba8094a0c59109bae0b7 (patch)
tree1d97d9c50e4fb676c0c3e3ada2cfd3b1f9cd6921 /xen/include/xen/tasklet.h
parent0e13089b1456e71c99005caa7d4b78ba34656337 (diff)
downloadxen-a974b14d790ce883da98ba8094a0c59109bae0b7.tar.gz
xen-a974b14d790ce883da98ba8094a0c59109bae0b7.tar.bz2
xen-a974b14d790ce883da98ba8094a0c59109bae0b7.zip
tasklet: Improve scheduler interaction.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/xen/tasklet.h')
-rw-r--r--xen/include/xen/tasklet.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/xen/include/xen/tasklet.h b/xen/include/xen/tasklet.h
index 5eb8f8979b..d324fb39c1 100644
--- a/xen/include/xen/tasklet.h
+++ b/xen/include/xen/tasklet.h
@@ -24,10 +24,16 @@ struct tasklet
#define DECLARE_TASKLET(name, func, data) \
struct tasklet name = { LIST_HEAD_INIT(name.list), -1, 0, 0, func, data }
+/* Indicates status of tasklet work on each CPU. */
+DECLARE_PER_CPU(unsigned long, tasklet_work_to_do);
+#define _TASKLET_enqueued 0 /* Tasklet work is enqueued for this CPU. */
+#define _TASKLET_scheduled 1 /* Scheduler has scheduled do_tasklet(). */
+#define TASKLET_enqueued (1ul << _TASKLET_enqueued)
+#define TASKLET_scheduled (1ul << _TASKLET_scheduled)
+
void tasklet_schedule_on_cpu(struct tasklet *t, unsigned int cpu);
void tasklet_schedule(struct tasklet *t);
void do_tasklet(void);
-bool_t tasklet_queue_empty(unsigned int cpu);
void tasklet_kill(struct tasklet *t);
void migrate_tasklets_from_cpu(unsigned int cpu);
void tasklet_init(