26 #ifdef CONFIG_RCU_TRACE
27 #define RCU_TRACE(stmt) stmt
29 #define RCU_TRACE(stmt)
50 #define DYNTICK_TASK_NEST_WIDTH 7
51 #define DYNTICK_TASK_NEST_VALUE ((LLONG_MAX >> DYNTICK_TASK_NEST_WIDTH) + 1)
52 #define DYNTICK_TASK_NEST_MASK (LLONG_MAX - DYNTICK_TASK_NEST_VALUE + 1)
53 #define DYNTICK_TASK_FLAG ((DYNTICK_TASK_NEST_VALUE / 8) * 2)
54 #define DYNTICK_TASK_MASK ((DYNTICK_TASK_NEST_VALUE / 8) * 3)
55 #define DYNTICK_TASK_EXIT_IDLE (DYNTICK_TASK_NEST_VALUE + \
64 #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD
65 # define STATE_RCU_HEAD_READY 0
66 # define STATE_RCU_HEAD_QUEUED 1
70 static inline void debug_rcu_head_queue(
struct rcu_head *
head)
75 STATE_RCU_HEAD_QUEUED);
78 static inline void debug_rcu_head_unqueue(
struct rcu_head *
head)
81 STATE_RCU_HEAD_QUEUED,
82 STATE_RCU_HEAD_READY);
86 static inline void debug_rcu_head_queue(
struct rcu_head *
head)
90 static inline void debug_rcu_head_unqueue(
struct rcu_head *
head)
95 extern void kfree(
const void *);
97 static inline bool __rcu_reclaim(
char *rn,
struct rcu_head *
head)
99 unsigned long offset = (
unsigned long)head->func;
103 kfree((
void *)head - offset);