| Date | Mon, 8 Apr 2013 13:10:32 -0700 | From | tip-bot for Thomas Gleixner <> | Subject | [tip:smp/hotplug] idle: Implement set/ clr functions for need_resched poll |
| |
Commit-ID: 3a98f871ecaf44806e188184332c3fec27c8f08c Gitweb: http://git.kernel.org/tip/3a98f871ecaf44806e188184332c3fec27c8f08c Author: Thomas Gleixner <tglx@linutronix.de> AuthorDate: Thu, 21 Mar 2013 22:49:33 +0100 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Mon, 8 Apr 2013 17:39:22 +0200
idle: Implement set/clr functions for need_resched poll
Implement set/clear functions for the idle need_resched poll implementation.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Paul McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Reviewed-by: Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> Cc: Magnus Damm <magnus.damm@gmail.com> Link: http://lkml.kernel.org/r/20130321215233.518839807@linutronix.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- include/linux/sched.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/include/linux/sched.h b/include/linux/sched.h index 6709a58..21fe9a1 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2632,13 +2632,34 @@ static inline int tsk_is_polling(struct task_struct *p) { return task_thread_info(p)->status & TS_POLLING; } +static inline void current_set_polling(void) +{ + current_thread_info()->status |= TS_POLLING; +} + +static inline void current_clr_polling(void) +{ + current_thread_info()->status &= ~TS_POLLING; + smp_mb__after_clear_bit(); +} #elif defined(TIF_POLLING_NRFLAG) static inline int tsk_is_polling(struct task_struct *p) { return test_tsk_thread_flag(p, TIF_POLLING_NRFLAG); } +static inline void current_set_polling(void) +{ + set_thread_flag(TIF_POLLING_NRFLAG); +} + +static inline void current_clr_polling(void) +{ + clear_thread_flag(TIF_POLLING_NRFLAG); +} #else static inline int tsk_is_polling(struct task_struct *p) { return 0; } +static inline void current_set_polling(void) { } +static inline void current_clr_polling(void) { } #endif /*
|