aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2010-11-17 20:11:42 -0500
committerFrederic Weisbecker <fweisbec@gmail.com>2010-11-18 08:37:44 -0500
commit53cf810b1934f08a68e131aeeb16267a778f43df (patch)
tree9407f9897084bb9669668c74f4f2c904f5e8877f
parentfe5542030dce3b951f9eaf3ecb9a7bc5fa7bfed1 (diff)
tracing: Allow syscall trace events for non privileged users
As for the raw syscalls events, individual syscall events won't leak system wide information on task bound tracing. Allow non privileged users to use them in such workflow. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Jason Baron <jbaron@redhat.com>
-rw-r--r--include/linux/ftrace_event.h8
-rw-r--r--include/linux/syscalls.h6
-rw-r--r--include/trace/ftrace.h7
3 files changed, 13 insertions, 8 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 312dce7e0d52..725bf6bd39f7 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -198,6 +198,14 @@ struct ftrace_event_call {
198#endif 198#endif
199}; 199};
200 200
201#define __TRACE_EVENT_FLAGS(name, value) \
202 static int __init trace_init_flags_##name(void) \
203 { \
204 event_##name.flags = value; \
205 return 0; \
206 } \
207 early_initcall(trace_init_flags_##name);
208
201#define PERF_MAX_TRACE_SIZE 2048 209#define PERF_MAX_TRACE_SIZE 2048
202 210
203#define MAX_FILTER_PRED 32 211#define MAX_FILTER_PRED 32
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index cacc27a0e285..13b9731d30cf 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -137,7 +137,8 @@ extern struct trace_event_functions exit_syscall_print_funcs;
137 .class = &event_class_syscall_enter, \ 137 .class = &event_class_syscall_enter, \
138 .event.funcs = &enter_syscall_print_funcs, \ 138 .event.funcs = &enter_syscall_print_funcs, \
139 .data = (void *)&__syscall_meta_##sname,\ 139 .data = (void *)&__syscall_meta_##sname,\
140 } 140 }; \
141 __TRACE_EVENT_FLAGS(enter_##sname, TRACE_EVENT_FL_CAP_ANY)
141 142
142#define SYSCALL_TRACE_EXIT_EVENT(sname) \ 143#define SYSCALL_TRACE_EXIT_EVENT(sname) \
143 static struct syscall_metadata \ 144 static struct syscall_metadata \
@@ -152,7 +153,8 @@ extern struct trace_event_functions exit_syscall_print_funcs;
152 .class = &event_class_syscall_exit, \ 153 .class = &event_class_syscall_exit, \
153 .event.funcs = &exit_syscall_print_funcs, \ 154 .event.funcs = &exit_syscall_print_funcs, \
154 .data = (void *)&__syscall_meta_##sname,\ 155 .data = (void *)&__syscall_meta_##sname,\
155 } 156 }; \
157 __TRACE_EVENT_FLAGS(exit_##sname, TRACE_EVENT_FL_CAP_ANY)
156 158
157#define SYSCALL_METADATA(sname, nb) \ 159#define SYSCALL_METADATA(sname, nb) \
158 SYSCALL_TRACE_ENTER_EVENT(sname); \ 160 SYSCALL_TRACE_ENTER_EVENT(sname); \
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 6f540123d43e..e718a917d897 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -84,12 +84,7 @@
84 84
85#undef TRACE_EVENT_FLAGS 85#undef TRACE_EVENT_FLAGS
86#define TRACE_EVENT_FLAGS(name, value) \ 86#define TRACE_EVENT_FLAGS(name, value) \
87 static int __init trace_init_flags_##name(void) \ 87 __TRACE_EVENT_FLAGS(name, value)
88 { \
89 event_##name.flags = value; \
90 return 0; \
91 } \
92 early_initcall(trace_init_flags_##name);
93 88
94#include TRACE_INCLUDE(TRACE_INCLUDE_FILE) 89#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
95 90