diff options
Diffstat (limited to 'kernel/sched/MuQSS.h')
-rw-r--r-- | kernel/sched/MuQSS.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/sched/MuQSS.h b/kernel/sched/MuQSS.h index f9510d739..3565a7d8a 100644 --- a/kernel/sched/MuQSS.h +++ b/kernel/sched/MuQSS.h @@ -1,5 +1,6 @@ #include <linux/sched.h> #include <linux/cpuidle.h> +#include <linux/interrupt.h> #include <linux/skip_list.h> #include <linux/stop_machine.h> #include "cpuacct.h" @@ -325,4 +326,18 @@ static inline void cpufreq_trigger(u64 time, unsigned long util) #define arch_scale_freq_invariant() (false) #endif +/* + * This should only be called when current == rq->idle. Dodgy workaround for + * when softirqs are pending and we are in the idle loop. Setting current to + * resched will kick us out of the idle loop and the softirqs will be serviced + * on our next pass through schedule(). + */ +static inline bool softirq_pending(int cpu) +{ + if (likely(!local_softirq_pending())) + return false; + set_tsk_need_resched(current); + return true; +} + #endif /* MUQSS_SCHED_H */ |