diff options
Diffstat (limited to 'include/linux/rcupreempt.h')
-rw-r--r-- | include/linux/rcupreempt.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h index 60c2a033b19e..01152ed532c8 100644 --- a/include/linux/rcupreempt.h +++ b/include/linux/rcupreempt.h | |||
@@ -82,5 +82,27 @@ extern struct rcupreempt_trace *rcupreempt_trace_cpu(int cpu); | |||
82 | 82 | ||
83 | struct softirq_action; | 83 | struct softirq_action; |
84 | 84 | ||
85 | #ifdef CONFIG_NO_HZ | ||
86 | DECLARE_PER_CPU(long, dynticks_progress_counter); | ||
87 | |||
88 | static inline void rcu_enter_nohz(void) | ||
89 | { | ||
90 | __get_cpu_var(dynticks_progress_counter)++; | ||
91 | WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); | ||
92 | mb(); | ||
93 | } | ||
94 | |||
95 | static inline void rcu_exit_nohz(void) | ||
96 | { | ||
97 | mb(); | ||
98 | __get_cpu_var(dynticks_progress_counter)++; | ||
99 | WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); | ||
100 | } | ||
101 | |||
102 | #else /* CONFIG_NO_HZ */ | ||
103 | #define rcu_enter_nohz() do { } while (0) | ||
104 | #define rcu_exit_nohz() do { } while (0) | ||
105 | #endif /* CONFIG_NO_HZ */ | ||
106 | |||
85 | #endif /* __KERNEL__ */ | 107 | #endif /* __KERNEL__ */ |
86 | #endif /* __LINUX_RCUPREEMPT_H */ | 108 | #endif /* __LINUX_RCUPREEMPT_H */ |