aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-04 11:17:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-04 11:17:12 -0400
commitb854e4de0bf88d094476af82c0d5a80f6f2af916 (patch)
tree6e9b0a9f28468b043bd395fd816c4b44d4ac8f58 /include
parent458c3f60ef12996d5a5b390260a5112bb1da1615 (diff)
parent7d992feb7694a21ee81f22894b455dadd5d1c110 (diff)
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RCU updates from Ingo Molnar: "Main RCU changes this cycle were: - Full-system idle detection. This is for use by Frederic Weisbecker's adaptive-ticks mechanism. Its purpose is to allow the timekeeping CPU to shut off its tick when all other CPUs are idle. - Miscellaneous fixes. - Improved rcutorture test coverage. - Updated RCU documentation" * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits) nohz_full: Force RCU's grace-period kthreads onto timekeeping CPU nohz_full: Add full-system-idle state machine jiffies: Avoid undefined behavior from signed overflow rcu: Simplify _rcu_barrier() processing rcu: Make rcutorture emit online failures if verbose rcu: Remove unused variable from rcu_torture_writer() rcu: Sort rcutorture module parameters rcu: Increase rcutorture test coverage rcu: Add duplicate-callback tests to rcutorture doc: Fix memory-barrier control-dependency example rcu: Update RTFP documentation nohz_full: Add full-system-idle arguments to API nohz_full: Add full-system idle states and variables nohz_full: Add per-CPU idle-state tracking nohz_full: Add rcu_dyntick data for scalable detection of all-idle state nohz_full: Add Kconfig parameter for scalable detection of all-idle state nohz_full: Add testing information to documentation rcu: Eliminate unused APIs intended for adaptive ticks rcu: Select IRQ_WORK from TREE_PREEMPT_RCU rculist: list_first_or_null_rcu() should use list_entry_rcu() ...
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/vmlinux.lds.h7
-rw-r--r--include/linux/debugobjects.h6
-rw-r--r--include/linux/ftrace_event.h34
-rw-r--r--include/linux/jiffies.h8
-rw-r--r--include/linux/rculist.h5
-rw-r--r--include/linux/rcupdate.h26
-rw-r--r--include/trace/events/rcu.h82
7 files changed, 111 insertions, 57 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 69732d279e8b..83e2c31e8b00 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -122,8 +122,12 @@
122#define TRACE_PRINTKS() VMLINUX_SYMBOL(__start___trace_bprintk_fmt) = .; \ 122#define TRACE_PRINTKS() VMLINUX_SYMBOL(__start___trace_bprintk_fmt) = .; \
123 *(__trace_printk_fmt) /* Trace_printk fmt' pointer */ \ 123 *(__trace_printk_fmt) /* Trace_printk fmt' pointer */ \
124 VMLINUX_SYMBOL(__stop___trace_bprintk_fmt) = .; 124 VMLINUX_SYMBOL(__stop___trace_bprintk_fmt) = .;
125#define TRACEPOINT_STR() VMLINUX_SYMBOL(__start___tracepoint_str) = .; \
126 *(__tracepoint_str) /* Trace_printk fmt' pointer */ \
127 VMLINUX_SYMBOL(__stop___tracepoint_str) = .;
125#else 128#else
126#define TRACE_PRINTKS() 129#define TRACE_PRINTKS()
130#define TRACEPOINT_STR()
127#endif 131#endif
128 132
129#ifdef CONFIG_FTRACE_SYSCALLS 133#ifdef CONFIG_FTRACE_SYSCALLS
@@ -190,7 +194,8 @@
190 VMLINUX_SYMBOL(__stop___verbose) = .; \ 194 VMLINUX_SYMBOL(__stop___verbose) = .; \
191 LIKELY_PROFILE() \ 195 LIKELY_PROFILE() \
192 BRANCH_PROFILE() \ 196 BRANCH_PROFILE() \
193 TRACE_PRINTKS() 197 TRACE_PRINTKS() \
198 TRACEPOINT_STR()
194 199
195/* 200/*
196 * Data section helpers 201 * Data section helpers
diff --git a/include/linux/debugobjects.h b/include/linux/debugobjects.h
index 0e5f5785d9f2..98ffcbd4888e 100644
--- a/include/linux/debugobjects.h
+++ b/include/linux/debugobjects.h
@@ -63,7 +63,7 @@ struct debug_obj_descr {
63extern void debug_object_init (void *addr, struct debug_obj_descr *descr); 63extern void debug_object_init (void *addr, struct debug_obj_descr *descr);
64extern void 64extern void
65debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr); 65debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr);
66extern void debug_object_activate (void *addr, struct debug_obj_descr *descr); 66extern int debug_object_activate (void *addr, struct debug_obj_descr *descr);
67extern void debug_object_deactivate(void *addr, struct debug_obj_descr *descr); 67extern void debug_object_deactivate(void *addr, struct debug_obj_descr *descr);
68extern void debug_object_destroy (void *addr, struct debug_obj_descr *descr); 68extern void debug_object_destroy (void *addr, struct debug_obj_descr *descr);
69extern void debug_object_free (void *addr, struct debug_obj_descr *descr); 69extern void debug_object_free (void *addr, struct debug_obj_descr *descr);
@@ -85,8 +85,8 @@ static inline void
85debug_object_init (void *addr, struct debug_obj_descr *descr) { } 85debug_object_init (void *addr, struct debug_obj_descr *descr) { }
86static inline void 86static inline void
87debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { } 87debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { }
88static inline void 88static inline int
89debug_object_activate (void *addr, struct debug_obj_descr *descr) { } 89debug_object_activate (void *addr, struct debug_obj_descr *descr) { return 0; }
90static inline void 90static inline void
91debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { } 91debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { }
92static inline void 92static inline void
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 120d57a1c3a5..5eaa746735ff 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -359,6 +359,40 @@ do { \
359 __trace_printk(ip, fmt, ##args); \ 359 __trace_printk(ip, fmt, ##args); \
360} while (0) 360} while (0)
361 361
362/**
363 * tracepoint_string - register constant persistent string to trace system
364 * @str - a constant persistent string that will be referenced in tracepoints
365 *
366 * If constant strings are being used in tracepoints, it is faster and
367 * more efficient to just save the pointer to the string and reference
368 * that with a printf "%s" instead of saving the string in the ring buffer
369 * and wasting space and time.
370 *
371 * The problem with the above approach is that userspace tools that read
372 * the binary output of the trace buffers do not have access to the string.
373 * Instead they just show the address of the string which is not very
374 * useful to users.
375 *
376 * With tracepoint_string(), the string will be registered to the tracing
377 * system and exported to userspace via the debugfs/tracing/printk_formats
378 * file that maps the string address to the string text. This way userspace
379 * tools that read the binary buffers have a way to map the pointers to
380 * the ASCII strings they represent.
381 *
382 * The @str used must be a constant string and persistent as it would not
383 * make sense to show a string that no longer exists. But it is still fine
384 * to be used with modules, because when modules are unloaded, if they
385 * had tracepoints, the ring buffers are cleared too. As long as the string
386 * does not change during the life of the module, it is fine to use
387 * tracepoint_string() within a module.
388 */
389#define tracepoint_string(str) \
390 ({ \
391 static const char *___tp_str __tracepoint_string = str; \
392 ___tp_str; \
393 })
394#define __tracepoint_string __attribute__((section("__tracepoint_str")))
395
362#ifdef CONFIG_PERF_EVENTS 396#ifdef CONFIG_PERF_EVENTS
363struct perf_event; 397struct perf_event;
364 398
diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index 97ba4e78a37e..d235e88cfd7c 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -101,13 +101,13 @@ static inline u64 get_jiffies_64(void)
101#define time_after(a,b) \ 101#define time_after(a,b) \
102 (typecheck(unsigned long, a) && \ 102 (typecheck(unsigned long, a) && \
103 typecheck(unsigned long, b) && \ 103 typecheck(unsigned long, b) && \
104 ((long)(b) - (long)(a) < 0)) 104 ((long)((b) - (a)) < 0))
105#define time_before(a,b) time_after(b,a) 105#define time_before(a,b) time_after(b,a)
106 106
107#define time_after_eq(a,b) \ 107#define time_after_eq(a,b) \
108 (typecheck(unsigned long, a) && \ 108 (typecheck(unsigned long, a) && \
109 typecheck(unsigned long, b) && \ 109 typecheck(unsigned long, b) && \
110 ((long)(a) - (long)(b) >= 0)) 110 ((long)((a) - (b)) >= 0))
111#define time_before_eq(a,b) time_after_eq(b,a) 111#define time_before_eq(a,b) time_after_eq(b,a)
112 112
113/* 113/*
@@ -130,13 +130,13 @@ static inline u64 get_jiffies_64(void)
130#define time_after64(a,b) \ 130#define time_after64(a,b) \
131 (typecheck(__u64, a) && \ 131 (typecheck(__u64, a) && \
132 typecheck(__u64, b) && \ 132 typecheck(__u64, b) && \
133 ((__s64)(b) - (__s64)(a) < 0)) 133 ((__s64)((b) - (a)) < 0))
134#define time_before64(a,b) time_after64(b,a) 134#define time_before64(a,b) time_after64(b,a)
135 135
136#define time_after_eq64(a,b) \ 136#define time_after_eq64(a,b) \
137 (typecheck(__u64, a) && \ 137 (typecheck(__u64, a) && \
138 typecheck(__u64, b) && \ 138 typecheck(__u64, b) && \
139 ((__s64)(a) - (__s64)(b) >= 0)) 139 ((__s64)((a) - (b)) >= 0))
140#define time_before_eq64(a,b) time_after_eq64(b,a) 140#define time_before_eq64(a,b) time_after_eq64(b,a)
141 141
142#define time_in_range64(a, b, c) \ 142#define time_in_range64(a, b, c) \
diff --git a/include/linux/rculist.h b/include/linux/rculist.h
index f4b1001a4676..4106721c4e5e 100644
--- a/include/linux/rculist.h
+++ b/include/linux/rculist.h
@@ -267,8 +267,9 @@ static inline void list_splice_init_rcu(struct list_head *list,
267 */ 267 */
268#define list_first_or_null_rcu(ptr, type, member) \ 268#define list_first_or_null_rcu(ptr, type, member) \
269 ({struct list_head *__ptr = (ptr); \ 269 ({struct list_head *__ptr = (ptr); \
270 struct list_head __rcu *__next = list_next_rcu(__ptr); \ 270 struct list_head *__next = ACCESS_ONCE(__ptr->next); \
271 likely(__ptr != __next) ? container_of(__next, type, member) : NULL; \ 271 likely(__ptr != __next) ? \
272 list_entry_rcu(__next, type, member) : NULL; \
272 }) 273 })
273 274
274/** 275/**
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 4b14bdc911d7..f1f1bc39346b 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -52,7 +52,7 @@ extern int rcutorture_runnable; /* for sysctl */
52#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) 52#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
53extern void rcutorture_record_test_transition(void); 53extern void rcutorture_record_test_transition(void);
54extern void rcutorture_record_progress(unsigned long vernum); 54extern void rcutorture_record_progress(unsigned long vernum);
55extern void do_trace_rcu_torture_read(char *rcutorturename, 55extern void do_trace_rcu_torture_read(const char *rcutorturename,
56 struct rcu_head *rhp, 56 struct rcu_head *rhp,
57 unsigned long secs, 57 unsigned long secs,
58 unsigned long c_old, 58 unsigned long c_old,
@@ -65,7 +65,7 @@ static inline void rcutorture_record_progress(unsigned long vernum)
65{ 65{
66} 66}
67#ifdef CONFIG_RCU_TRACE 67#ifdef CONFIG_RCU_TRACE
68extern void do_trace_rcu_torture_read(char *rcutorturename, 68extern void do_trace_rcu_torture_read(const char *rcutorturename,
69 struct rcu_head *rhp, 69 struct rcu_head *rhp,
70 unsigned long secs, 70 unsigned long secs,
71 unsigned long c_old, 71 unsigned long c_old,
@@ -229,13 +229,9 @@ extern void rcu_irq_exit(void);
229#ifdef CONFIG_RCU_USER_QS 229#ifdef CONFIG_RCU_USER_QS
230extern void rcu_user_enter(void); 230extern void rcu_user_enter(void);
231extern void rcu_user_exit(void); 231extern void rcu_user_exit(void);
232extern void rcu_user_enter_after_irq(void);
233extern void rcu_user_exit_after_irq(void);
234#else 232#else
235static inline void rcu_user_enter(void) { } 233static inline void rcu_user_enter(void) { }
236static inline void rcu_user_exit(void) { } 234static inline void rcu_user_exit(void) { }
237static inline void rcu_user_enter_after_irq(void) { }
238static inline void rcu_user_exit_after_irq(void) { }
239static inline void rcu_user_hooks_switch(struct task_struct *prev, 235static inline void rcu_user_hooks_switch(struct task_struct *prev,
240 struct task_struct *next) { } 236 struct task_struct *next) { }
241#endif /* CONFIG_RCU_USER_QS */ 237#endif /* CONFIG_RCU_USER_QS */
@@ -1015,4 +1011,22 @@ static inline bool rcu_is_nocb_cpu(int cpu) { return false; }
1015#endif /* #else #ifdef CONFIG_RCU_NOCB_CPU */ 1011#endif /* #else #ifdef CONFIG_RCU_NOCB_CPU */
1016 1012
1017 1013
1014/* Only for use by adaptive-ticks code. */
1015#ifdef CONFIG_NO_HZ_FULL_SYSIDLE
1016extern bool rcu_sys_is_idle(void);
1017extern void rcu_sysidle_force_exit(void);
1018#else /* #ifdef CONFIG_NO_HZ_FULL_SYSIDLE */
1019
1020static inline bool rcu_sys_is_idle(void)
1021{
1022 return false;
1023}
1024
1025static inline void rcu_sysidle_force_exit(void)
1026{
1027}
1028
1029#endif /* #else #ifdef CONFIG_NO_HZ_FULL_SYSIDLE */
1030
1031
1018#endif /* __LINUX_RCUPDATE_H */ 1032#endif /* __LINUX_RCUPDATE_H */
diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h
index 59ebcc89f148..ee2376cfaab3 100644
--- a/include/trace/events/rcu.h
+++ b/include/trace/events/rcu.h
@@ -19,12 +19,12 @@
19 */ 19 */
20TRACE_EVENT(rcu_utilization, 20TRACE_EVENT(rcu_utilization,
21 21
22 TP_PROTO(char *s), 22 TP_PROTO(const char *s),
23 23
24 TP_ARGS(s), 24 TP_ARGS(s),
25 25
26 TP_STRUCT__entry( 26 TP_STRUCT__entry(
27 __field(char *, s) 27 __field(const char *, s)
28 ), 28 ),
29 29
30 TP_fast_assign( 30 TP_fast_assign(
@@ -51,14 +51,14 @@ TRACE_EVENT(rcu_utilization,
51 */ 51 */
52TRACE_EVENT(rcu_grace_period, 52TRACE_EVENT(rcu_grace_period,
53 53
54 TP_PROTO(char *rcuname, unsigned long gpnum, char *gpevent), 54 TP_PROTO(const char *rcuname, unsigned long gpnum, const char *gpevent),
55 55
56 TP_ARGS(rcuname, gpnum, gpevent), 56 TP_ARGS(rcuname, gpnum, gpevent),
57 57
58 TP_STRUCT__entry( 58 TP_STRUCT__entry(
59 __field(char *, rcuname) 59 __field(const char *, rcuname)
60 __field(unsigned long, gpnum) 60 __field(unsigned long, gpnum)
61 __field(char *, gpevent) 61 __field(const char *, gpevent)
62 ), 62 ),
63 63
64 TP_fast_assign( 64 TP_fast_assign(
@@ -89,21 +89,21 @@ TRACE_EVENT(rcu_grace_period,
89 */ 89 */
90TRACE_EVENT(rcu_future_grace_period, 90TRACE_EVENT(rcu_future_grace_period,
91 91
92 TP_PROTO(char *rcuname, unsigned long gpnum, unsigned long completed, 92 TP_PROTO(const char *rcuname, unsigned long gpnum, unsigned long completed,
93 unsigned long c, u8 level, int grplo, int grphi, 93 unsigned long c, u8 level, int grplo, int grphi,
94 char *gpevent), 94 const char *gpevent),
95 95
96 TP_ARGS(rcuname, gpnum, completed, c, level, grplo, grphi, gpevent), 96 TP_ARGS(rcuname, gpnum, completed, c, level, grplo, grphi, gpevent),
97 97
98 TP_STRUCT__entry( 98 TP_STRUCT__entry(
99 __field(char *, rcuname) 99 __field(const char *, rcuname)
100 __field(unsigned long, gpnum) 100 __field(unsigned long, gpnum)
101 __field(unsigned long, completed) 101 __field(unsigned long, completed)
102 __field(unsigned long, c) 102 __field(unsigned long, c)
103 __field(u8, level) 103 __field(u8, level)
104 __field(int, grplo) 104 __field(int, grplo)
105 __field(int, grphi) 105 __field(int, grphi)
106 __field(char *, gpevent) 106 __field(const char *, gpevent)
107 ), 107 ),
108 108
109 TP_fast_assign( 109 TP_fast_assign(
@@ -132,13 +132,13 @@ TRACE_EVENT(rcu_future_grace_period,
132 */ 132 */
133TRACE_EVENT(rcu_grace_period_init, 133TRACE_EVENT(rcu_grace_period_init,
134 134
135 TP_PROTO(char *rcuname, unsigned long gpnum, u8 level, 135 TP_PROTO(const char *rcuname, unsigned long gpnum, u8 level,
136 int grplo, int grphi, unsigned long qsmask), 136 int grplo, int grphi, unsigned long qsmask),
137 137
138 TP_ARGS(rcuname, gpnum, level, grplo, grphi, qsmask), 138 TP_ARGS(rcuname, gpnum, level, grplo, grphi, qsmask),
139 139
140 TP_STRUCT__entry( 140 TP_STRUCT__entry(
141 __field(char *, rcuname) 141 __field(const char *, rcuname)
142 __field(unsigned long, gpnum) 142 __field(unsigned long, gpnum)
143 __field(u8, level) 143 __field(u8, level)
144 __field(int, grplo) 144 __field(int, grplo)
@@ -168,12 +168,12 @@ TRACE_EVENT(rcu_grace_period_init,
168 */ 168 */
169TRACE_EVENT(rcu_preempt_task, 169TRACE_EVENT(rcu_preempt_task,
170 170
171 TP_PROTO(char *rcuname, int pid, unsigned long gpnum), 171 TP_PROTO(const char *rcuname, int pid, unsigned long gpnum),
172 172
173 TP_ARGS(rcuname, pid, gpnum), 173 TP_ARGS(rcuname, pid, gpnum),
174 174
175 TP_STRUCT__entry( 175 TP_STRUCT__entry(
176 __field(char *, rcuname) 176 __field(const char *, rcuname)
177 __field(unsigned long, gpnum) 177 __field(unsigned long, gpnum)
178 __field(int, pid) 178 __field(int, pid)
179 ), 179 ),
@@ -195,12 +195,12 @@ TRACE_EVENT(rcu_preempt_task,
195 */ 195 */
196TRACE_EVENT(rcu_unlock_preempted_task, 196TRACE_EVENT(rcu_unlock_preempted_task,
197 197
198 TP_PROTO(char *rcuname, unsigned long gpnum, int pid), 198 TP_PROTO(const char *rcuname, unsigned long gpnum, int pid),
199 199
200 TP_ARGS(rcuname, gpnum, pid), 200 TP_ARGS(rcuname, gpnum, pid),
201 201
202 TP_STRUCT__entry( 202 TP_STRUCT__entry(
203 __field(char *, rcuname) 203 __field(const char *, rcuname)
204 __field(unsigned long, gpnum) 204 __field(unsigned long, gpnum)
205 __field(int, pid) 205 __field(int, pid)
206 ), 206 ),
@@ -224,14 +224,14 @@ TRACE_EVENT(rcu_unlock_preempted_task,
224 */ 224 */
225TRACE_EVENT(rcu_quiescent_state_report, 225TRACE_EVENT(rcu_quiescent_state_report,
226 226
227 TP_PROTO(char *rcuname, unsigned long gpnum, 227 TP_PROTO(const char *rcuname, unsigned long gpnum,
228 unsigned long mask, unsigned long qsmask, 228 unsigned long mask, unsigned long qsmask,
229 u8 level, int grplo, int grphi, int gp_tasks), 229 u8 level, int grplo, int grphi, int gp_tasks),
230 230
231 TP_ARGS(rcuname, gpnum, mask, qsmask, level, grplo, grphi, gp_tasks), 231 TP_ARGS(rcuname, gpnum, mask, qsmask, level, grplo, grphi, gp_tasks),
232 232
233 TP_STRUCT__entry( 233 TP_STRUCT__entry(
234 __field(char *, rcuname) 234 __field(const char *, rcuname)
235 __field(unsigned long, gpnum) 235 __field(unsigned long, gpnum)
236 __field(unsigned long, mask) 236 __field(unsigned long, mask)
237 __field(unsigned long, qsmask) 237 __field(unsigned long, qsmask)
@@ -268,15 +268,15 @@ TRACE_EVENT(rcu_quiescent_state_report,
268 */ 268 */
269TRACE_EVENT(rcu_fqs, 269TRACE_EVENT(rcu_fqs,
270 270
271 TP_PROTO(char *rcuname, unsigned long gpnum, int cpu, char *qsevent), 271 TP_PROTO(const char *rcuname, unsigned long gpnum, int cpu, const char *qsevent),
272 272
273 TP_ARGS(rcuname, gpnum, cpu, qsevent), 273 TP_ARGS(rcuname, gpnum, cpu, qsevent),
274 274
275 TP_STRUCT__entry( 275 TP_STRUCT__entry(
276 __field(char *, rcuname) 276 __field(const char *, rcuname)
277 __field(unsigned long, gpnum) 277 __field(unsigned long, gpnum)
278 __field(int, cpu) 278 __field(int, cpu)
279 __field(char *, qsevent) 279 __field(const char *, qsevent)
280 ), 280 ),
281 281
282 TP_fast_assign( 282 TP_fast_assign(
@@ -308,12 +308,12 @@ TRACE_EVENT(rcu_fqs,
308 */ 308 */
309TRACE_EVENT(rcu_dyntick, 309TRACE_EVENT(rcu_dyntick,
310 310
311 TP_PROTO(char *polarity, long long oldnesting, long long newnesting), 311 TP_PROTO(const char *polarity, long long oldnesting, long long newnesting),
312 312
313 TP_ARGS(polarity, oldnesting, newnesting), 313 TP_ARGS(polarity, oldnesting, newnesting),
314 314
315 TP_STRUCT__entry( 315 TP_STRUCT__entry(
316 __field(char *, polarity) 316 __field(const char *, polarity)
317 __field(long long, oldnesting) 317 __field(long long, oldnesting)
318 __field(long long, newnesting) 318 __field(long long, newnesting)
319 ), 319 ),
@@ -352,12 +352,12 @@ TRACE_EVENT(rcu_dyntick,
352 */ 352 */
353TRACE_EVENT(rcu_prep_idle, 353TRACE_EVENT(rcu_prep_idle,
354 354
355 TP_PROTO(char *reason), 355 TP_PROTO(const char *reason),
356 356
357 TP_ARGS(reason), 357 TP_ARGS(reason),
358 358
359 TP_STRUCT__entry( 359 TP_STRUCT__entry(
360 __field(char *, reason) 360 __field(const char *, reason)
361 ), 361 ),
362 362
363 TP_fast_assign( 363 TP_fast_assign(
@@ -376,13 +376,13 @@ TRACE_EVENT(rcu_prep_idle,
376 */ 376 */
377TRACE_EVENT(rcu_callback, 377TRACE_EVENT(rcu_callback,
378 378
379 TP_PROTO(char *rcuname, struct rcu_head *rhp, long qlen_lazy, 379 TP_PROTO(const char *rcuname, struct rcu_head *rhp, long qlen_lazy,
380 long qlen), 380 long qlen),
381 381
382 TP_ARGS(rcuname, rhp, qlen_lazy, qlen), 382 TP_ARGS(rcuname, rhp, qlen_lazy, qlen),
383 383
384 TP_STRUCT__entry( 384 TP_STRUCT__entry(
385 __field(char *, rcuname) 385 __field(const char *, rcuname)
386 __field(void *, rhp) 386 __field(void *, rhp)
387 __field(void *, func) 387 __field(void *, func)
388 __field(long, qlen_lazy) 388 __field(long, qlen_lazy)
@@ -412,13 +412,13 @@ TRACE_EVENT(rcu_callback,
412 */ 412 */
413TRACE_EVENT(rcu_kfree_callback, 413TRACE_EVENT(rcu_kfree_callback,
414 414
415 TP_PROTO(char *rcuname, struct rcu_head *rhp, unsigned long offset, 415 TP_PROTO(const char *rcuname, struct rcu_head *rhp, unsigned long offset,
416 long qlen_lazy, long qlen), 416 long qlen_lazy, long qlen),
417 417
418 TP_ARGS(rcuname, rhp, offset, qlen_lazy, qlen), 418 TP_ARGS(rcuname, rhp, offset, qlen_lazy, qlen),
419 419
420 TP_STRUCT__entry( 420 TP_STRUCT__entry(
421 __field(char *, rcuname) 421 __field(const char *, rcuname)
422 __field(void *, rhp) 422 __field(void *, rhp)
423 __field(unsigned long, offset) 423 __field(unsigned long, offset)
424 __field(long, qlen_lazy) 424 __field(long, qlen_lazy)
@@ -447,12 +447,12 @@ TRACE_EVENT(rcu_kfree_callback,
447 */ 447 */
448TRACE_EVENT(rcu_batch_start, 448TRACE_EVENT(rcu_batch_start,
449 449
450 TP_PROTO(char *rcuname, long qlen_lazy, long qlen, long blimit), 450 TP_PROTO(const char *rcuname, long qlen_lazy, long qlen, long blimit),
451 451
452 TP_ARGS(rcuname, qlen_lazy, qlen, blimit), 452 TP_ARGS(rcuname, qlen_lazy, qlen, blimit),
453 453
454 TP_STRUCT__entry( 454 TP_STRUCT__entry(
455 __field(char *, rcuname) 455 __field(const char *, rcuname)
456 __field(long, qlen_lazy) 456 __field(long, qlen_lazy)
457 __field(long, qlen) 457 __field(long, qlen)
458 __field(long, blimit) 458 __field(long, blimit)
@@ -477,12 +477,12 @@ TRACE_EVENT(rcu_batch_start,
477 */ 477 */
478TRACE_EVENT(rcu_invoke_callback, 478TRACE_EVENT(rcu_invoke_callback,
479 479
480 TP_PROTO(char *rcuname, struct rcu_head *rhp), 480 TP_PROTO(const char *rcuname, struct rcu_head *rhp),
481 481
482 TP_ARGS(rcuname, rhp), 482 TP_ARGS(rcuname, rhp),
483 483
484 TP_STRUCT__entry( 484 TP_STRUCT__entry(
485 __field(char *, rcuname) 485 __field(const char *, rcuname)
486 __field(void *, rhp) 486 __field(void *, rhp)
487 __field(void *, func) 487 __field(void *, func)
488 ), 488 ),
@@ -506,12 +506,12 @@ TRACE_EVENT(rcu_invoke_callback,
506 */ 506 */
507TRACE_EVENT(rcu_invoke_kfree_callback, 507TRACE_EVENT(rcu_invoke_kfree_callback,
508 508
509 TP_PROTO(char *rcuname, struct rcu_head *rhp, unsigned long offset), 509 TP_PROTO(const char *rcuname, struct rcu_head *rhp, unsigned long offset),
510 510
511 TP_ARGS(rcuname, rhp, offset), 511 TP_ARGS(rcuname, rhp, offset),
512 512
513 TP_STRUCT__entry( 513 TP_STRUCT__entry(
514 __field(char *, rcuname) 514 __field(const char *, rcuname)
515 __field(void *, rhp) 515 __field(void *, rhp)
516 __field(unsigned long, offset) 516 __field(unsigned long, offset)
517 ), 517 ),
@@ -539,13 +539,13 @@ TRACE_EVENT(rcu_invoke_kfree_callback,
539 */ 539 */
540TRACE_EVENT(rcu_batch_end, 540TRACE_EVENT(rcu_batch_end,
541 541
542 TP_PROTO(char *rcuname, int callbacks_invoked, 542 TP_PROTO(const char *rcuname, int callbacks_invoked,
543 bool cb, bool nr, bool iit, bool risk), 543 bool cb, bool nr, bool iit, bool risk),
544 544
545 TP_ARGS(rcuname, callbacks_invoked, cb, nr, iit, risk), 545 TP_ARGS(rcuname, callbacks_invoked, cb, nr, iit, risk),
546 546
547 TP_STRUCT__entry( 547 TP_STRUCT__entry(
548 __field(char *, rcuname) 548 __field(const char *, rcuname)
549 __field(int, callbacks_invoked) 549 __field(int, callbacks_invoked)
550 __field(bool, cb) 550 __field(bool, cb)
551 __field(bool, nr) 551 __field(bool, nr)
@@ -577,13 +577,13 @@ TRACE_EVENT(rcu_batch_end,
577 */ 577 */
578TRACE_EVENT(rcu_torture_read, 578TRACE_EVENT(rcu_torture_read,
579 579
580 TP_PROTO(char *rcutorturename, struct rcu_head *rhp, 580 TP_PROTO(const char *rcutorturename, struct rcu_head *rhp,
581 unsigned long secs, unsigned long c_old, unsigned long c), 581 unsigned long secs, unsigned long c_old, unsigned long c),
582 582
583 TP_ARGS(rcutorturename, rhp, secs, c_old, c), 583 TP_ARGS(rcutorturename, rhp, secs, c_old, c),
584 584
585 TP_STRUCT__entry( 585 TP_STRUCT__entry(
586 __field(char *, rcutorturename) 586 __field(const char *, rcutorturename)
587 __field(struct rcu_head *, rhp) 587 __field(struct rcu_head *, rhp)
588 __field(unsigned long, secs) 588 __field(unsigned long, secs)
589 __field(unsigned long, c_old) 589 __field(unsigned long, c_old)
@@ -623,13 +623,13 @@ TRACE_EVENT(rcu_torture_read,
623 */ 623 */
624TRACE_EVENT(rcu_barrier, 624TRACE_EVENT(rcu_barrier,
625 625
626 TP_PROTO(char *rcuname, char *s, int cpu, int cnt, unsigned long done), 626 TP_PROTO(const char *rcuname, const char *s, int cpu, int cnt, unsigned long done),
627 627
628 TP_ARGS(rcuname, s, cpu, cnt, done), 628 TP_ARGS(rcuname, s, cpu, cnt, done),
629 629
630 TP_STRUCT__entry( 630 TP_STRUCT__entry(
631 __field(char *, rcuname) 631 __field(const char *, rcuname)
632 __field(char *, s) 632 __field(const char *, s)
633 __field(int, cpu) 633 __field(int, cpu)
634 __field(int, cnt) 634 __field(int, cnt)
635 __field(unsigned long, done) 635 __field(unsigned long, done)