X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=kernel%2Fsoftirq.c;h=3a94905fa5d27c4d0ef59ad56e83ad353e14f1fa;hb=ee37ba7a4212c7420f12e6a2ad8a3966649ede7a;hp=258885a543db60692a695aa682abb6c95f3ffcdf;hpb=69257cae20640a396f03aa0bf169b815ba66a58a;p=karo-tx-linux.git diff --git a/kernel/softirq.c b/kernel/softirq.c index 258885a543db..3a94905fa5d2 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -213,6 +213,7 @@ restart: do { if (pending & 1) { int prev_count = preempt_count(); + kstat_incr_softirqs_this_cpu(h - softirq_vec); trace_softirq_entry(h, softirq_vec); h->action(h); @@ -382,6 +383,17 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) EXPORT_SYMBOL(__tasklet_hi_schedule); +void __tasklet_hi_schedule_first(struct tasklet_struct *t) +{ + BUG_ON(!irqs_disabled()); + + t->next = __get_cpu_var(tasklet_hi_vec).head; + __get_cpu_var(tasklet_hi_vec).head = t; + __raise_softirq_irqoff(HI_SOFTIRQ); +} + +EXPORT_SYMBOL(__tasklet_hi_schedule_first); + static void tasklet_action(struct softirq_action *a) { struct tasklet_struct *list;