diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-04-15 10:19:58 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-04-15 10:19:58 +0100 |
commit | a29af79e4ecf404bbd084b7b39cf139b963982ea (patch) | |
tree | 220366dfa75fcc2ed737c19a733c1dd14f8809a1 /xen/include/xen/softirq.h | |
parent | 8a7a02ee55bfd1861ae79d191215c8ccd79c3d78 (diff) | |
download | xen-a29af79e4ecf404bbd084b7b39cf139b963982ea.tar.gz xen-a29af79e4ecf404bbd084b7b39cf139b963982ea.tar.bz2 xen-a29af79e4ecf404bbd084b7b39cf139b963982ea.zip |
Change tasklet implementation so that tasklet_kill() does not have to
busy-wait for softirq work to start. This reduces the possibility of
deadlocks, but the implementation is now less efficient. For the
current few users of tasklets this does not matter.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/xen/softirq.h')
-rw-r--r-- | xen/include/xen/softirq.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h index dbf4606261..4fa7a39b0c 100644 --- a/xen/include/xen/softirq.h +++ b/xen/include/xen/softirq.h @@ -59,7 +59,7 @@ static inline void raise_softirq(unsigned int nr) */ struct tasklet { - struct tasklet *next; + struct list_head list; bool_t is_scheduled; bool_t is_running; void (*func)(unsigned long); @@ -67,7 +67,7 @@ struct tasklet }; #define DECLARE_TASKLET(name, func, data) \ - struct tasklet name = { NULL, 0, 0, func, data } + struct tasklet name = { LIST_HEAD_INIT(name.list), 0, 0, func, data } void tasklet_schedule(struct tasklet *t); void tasklet_kill(struct tasklet *t); |