|
@@ -162,8 +162,6 @@ static inline void rcu_init_nohz(void) { }
|
|
|
* macro rather than an inline function to avoid #include hell.
|
|
|
*/
|
|
|
#ifdef CONFIG_TASKS_RCU
|
|
|
-#define TASKS_RCU(x) x
|
|
|
-extern struct srcu_struct tasks_rcu_exit_srcu;
|
|
|
#define rcu_note_voluntary_context_switch_lite(t) \
|
|
|
do { \
|
|
|
if (READ_ONCE((t)->rcu_tasks_holdout)) \
|
|
@@ -176,12 +174,15 @@ extern struct srcu_struct tasks_rcu_exit_srcu;
|
|
|
} while (0)
|
|
|
void call_rcu_tasks(struct rcu_head *head, rcu_callback_t func);
|
|
|
void synchronize_rcu_tasks(void);
|
|
|
+void exit_tasks_rcu_start(void);
|
|
|
+void exit_tasks_rcu_finish(void);
|
|
|
#else /* #ifdef CONFIG_TASKS_RCU */
|
|
|
-#define TASKS_RCU(x) do { } while (0)
|
|
|
#define rcu_note_voluntary_context_switch_lite(t) do { } while (0)
|
|
|
#define rcu_note_voluntary_context_switch(t) rcu_all_qs()
|
|
|
#define call_rcu_tasks call_rcu_sched
|
|
|
#define synchronize_rcu_tasks synchronize_sched
|
|
|
+static inline void exit_tasks_rcu_start(void) { }
|
|
|
+static inline void exit_tasks_rcu_finish(void) { }
|
|
|
#endif /* #else #ifdef CONFIG_TASKS_RCU */
|
|
|
|
|
|
/**
|