X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=kernel%2Fsoftirq.c;h=573019f258dc5c40c00f1f2bf43925eb7f094283;hb=9e1bf581d67d87a1d7fc0ea500729e3a03643a26;hp=df1098bbe51bf3a79fbf2c7954d0c929e7847f89;hpb=8d40237c730b8be87c1b80a5d96b9c603fefa829;p=linux-2.6.git diff --git a/kernel/softirq.c b/kernel/softirq.c index df1098bbe..573019f25 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -137,17 +137,11 @@ EXPORT_SYMBOL(do_softirq); void local_bh_enable(void) { + __local_bh_enable(); WARN_ON(irqs_disabled()); - /* - * Keep preemption disabled until we are done with - * softirq processing: - */ - preempt_count() -= SOFTIRQ_OFFSET - 1; - - if (unlikely(!in_interrupt() && local_softirq_pending())) - do_softirq(); - - dec_preempt_count(); + if (unlikely(!in_interrupt() && + local_softirq_pending())) + invoke_softirq(); preempt_check_resched(); } EXPORT_SYMBOL(local_bh_enable); @@ -323,38 +317,6 @@ void tasklet_kill(struct tasklet_struct *t) EXPORT_SYMBOL(tasklet_kill); -struct tasklet_head saved_tasklet; - -void dump_clear_tasklet(void) -{ - saved_tasklet.list = __get_cpu_var(tasklet_vec).list; - __get_cpu_var(tasklet_vec).list = NULL; -} - -EXPORT_SYMBOL_GPL(dump_clear_tasklet); - -void dump_run_tasklet(void) -{ - struct tasklet_struct *list; - - list = __get_cpu_var(tasklet_vec).list; - __get_cpu_var(tasklet_vec).list = NULL; - - while (list) { - struct tasklet_struct *t = list; - list = list->next; - - if (!atomic_read(&t->count) && - (test_and_clear_bit(TASKLET_STATE_SCHED, &t->state))) - t->func(t->data); - - t->next = __get_cpu_var(tasklet_vec).list; - __get_cpu_var(tasklet_vec).list = t; - } -} - -EXPORT_SYMBOL_GPL(dump_run_tasklet); - void __init softirq_init(void) { open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);