diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-05-11 11:10:24 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-05-11 11:10:24 +0100 |
commit | a974b14d790ce883da98ba8094a0c59109bae0b7 (patch) | |
tree | 1d97d9c50e4fb676c0c3e3ada2cfd3b1f9cd6921 /xen/include/xen/tasklet.h | |
parent | 0e13089b1456e71c99005caa7d4b78ba34656337 (diff) | |
download | xen-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.h | 8 |
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( |