This source file includes following definitions.
- __current_set_polling
- current_set_polling_and_test
- __current_clr_polling
- current_clr_polling_and_test
- __current_set_polling
- __current_clr_polling
- current_set_polling_and_test
- current_clr_polling_and_test
- current_clr_polling
1
2 #ifndef _LINUX_SCHED_IDLE_H
3 #define _LINUX_SCHED_IDLE_H
4
5 #include <linux/sched.h>
6
7 enum cpu_idle_type {
8 CPU_IDLE,
9 CPU_NOT_IDLE,
10 CPU_NEWLY_IDLE,
11 CPU_MAX_IDLE_TYPES
12 };
13
14 extern void wake_up_if_idle(int cpu);
15
16
17
18
19
20 #ifdef TIF_POLLING_NRFLAG
21
22 static inline void __current_set_polling(void)
23 {
24 set_thread_flag(TIF_POLLING_NRFLAG);
25 }
26
27 static inline bool __must_check current_set_polling_and_test(void)
28 {
29 __current_set_polling();
30
31
32
33
34
35 smp_mb__after_atomic();
36
37 return unlikely(tif_need_resched());
38 }
39
40 static inline void __current_clr_polling(void)
41 {
42 clear_thread_flag(TIF_POLLING_NRFLAG);
43 }
44
45 static inline bool __must_check current_clr_polling_and_test(void)
46 {
47 __current_clr_polling();
48
49
50
51
52
53 smp_mb__after_atomic();
54
55 return unlikely(tif_need_resched());
56 }
57
58 #else
59 static inline void __current_set_polling(void) { }
60 static inline void __current_clr_polling(void) { }
61
62 static inline bool __must_check current_set_polling_and_test(void)
63 {
64 return unlikely(tif_need_resched());
65 }
66 static inline bool __must_check current_clr_polling_and_test(void)
67 {
68 return unlikely(tif_need_resched());
69 }
70 #endif
71
72 static inline void current_clr_polling(void)
73 {
74 __current_clr_polling();
75
76
77
78
79
80
81
82 smp_mb();
83
84 preempt_fold_need_resched();
85 }
86
87 #endif