1#ifndef PREEMPT_H 2#define PREEMPT_H 3 4#include <stdbool.h> 5 6#include "bug_on.h" 7 8/* This flag contains garbage if preempt_disable_count is 0. */ 9extern __thread int thread_cpu_id; 10 11/* Support recursive preemption disabling. */ 12extern __thread int preempt_disable_count; 13 14void preempt_disable(void); 15void preempt_enable(void); 16 17static inline void preempt_disable_notrace(void) 18{ 19 preempt_disable(); 20} 21 22static inline void preempt_enable_no_resched(void) 23{ 24 preempt_enable(); 25} 26 27static inline void preempt_enable_notrace(void) 28{ 29 preempt_enable(); 30} 31 32static inline int preempt_count(void) 33{ 34 return preempt_disable_count; 35} 36 37static inline bool preemptible(void) 38{ 39 return !preempt_count(); 40} 41 42static inline int get_cpu(void) 43{ 44 preempt_disable(); 45 return thread_cpu_id; 46} 47 48static inline void put_cpu(void) 49{ 50 preempt_enable(); 51} 52 53static inline void might_sleep(void) 54{ 55 BUG_ON(preempt_disable_count); 56} 57 58#endif 59