diff options
Diffstat (limited to 'include/linux/preempt.h')
| -rw-r--r-- | include/linux/preempt.h | 18 | 
1 files changed, 17 insertions, 1 deletions
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 87a03c746f17..f5d4723cdb3d 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -33,9 +33,25 @@ do { \  		preempt_schedule(); \  } while (0) +#ifdef CONFIG_CONTEXT_TRACKING + +void preempt_schedule_context(void); + +#define preempt_check_resched_context() \ +do { \ +	if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \ +		preempt_schedule_context(); \ +} while (0) +#else + +#define preempt_check_resched_context() preempt_check_resched() + +#endif /* CONFIG_CONTEXT_TRACKING */ +  #else /* !CONFIG_PREEMPT */  #define preempt_check_resched()		do { } while (0) +#define preempt_check_resched_context()	do { } while (0)  #endif /* CONFIG_PREEMPT */ @@ -88,7 +104,7 @@ do { \  do { \  	preempt_enable_no_resched_notrace(); \  	barrier(); \ -	preempt_check_resched(); \ +	preempt_check_resched_context(); \  } while (0)  #else /* !CONFIG_PREEMPT_COUNT */  |