From c81310d41ab762e49315f37b0818272e8dce12a2 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 30 Jun 2012 23:56:26 -0300 Subject: Add tasklet_kill * libdde_linux26/lib/src/arch/l4/softirq.c (tasklet_kill): New function. --- libdde_linux26/lib/src/arch/l4/softirq.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libdde_linux26') diff --git a/libdde_linux26/lib/src/arch/l4/softirq.c b/libdde_linux26/lib/src/arch/l4/softirq.c index 247a414f..d93bfaff 100644 --- a/libdde_linux26/lib/src/arch/l4/softirq.c +++ b/libdde_linux26/lib/src/arch/l4/softirq.c @@ -67,6 +67,20 @@ void tasklet_init(struct tasklet_struct *t, t->data = data; } +void tasklet_kill(struct tasklet_struct *t) +{ + if (in_interrupt()) + printk("Attempt to kill tasklet from interrupt\n"); + + while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { + do + yield(); + while (test_bit(TASKLET_STATE_SCHED, &t->state)); + } + tasklet_unlock_wait(t); + clear_bit(TASKLET_STATE_SCHED, &t->state); +} + /* enqueue tasklet */ static void __tasklet_enqueue(struct tasklet_struct *t, struct tasklet_head *listhead) -- cgit v1.2.3