aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2009-03-13 10:42:11 -0400
committerIngo Molnar <mingo@elte.hu>2009-03-13 11:57:42 -0400
commitbed1ffca022cc876fb83161d26670e9b5d3cf36b (patch)
treea896c79e9ea1af11f992826f1de7e2ece52fbe33 /include/asm-generic
parentf58ba100678f421bdcb000a3c71793f432dfab93 (diff)
tracing/syscalls: core infrastructure for syscalls tracing, enhancements
Impact: new feature This adds the generic support for syscalls tracing. This is currently exploited through a devoted tracer but other tracing engines can use it. (They just have to play with {start,stop}_ftrace_syscalls() and use the display callbacks unless they want to override them.) The syscalls prototypes definitions are abused here to steal some metadata informations: - syscall name, param types, param names, number of params The syscall addr is not directly saved during this definition because we don't know if its prototype is available in the namespace. But we don't really need it. The arch has just to build a function able to resolve the syscall number to its metadata struct. The current tracer prints the syscall names, parameters names and values (and their types optionally). Currently the value is a raw hex but higher level values diplaying is on my TODO list. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <1236955332-10133-2-git-send-email-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/vmlinux.lds.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 0e0f39be6c8b..d3bc3c86df6a 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -77,6 +77,14 @@
77#define TRACE_PRINTKS() 77#define TRACE_PRINTKS()
78#endif 78#endif
79 79
80#ifdef CONFIG_FTRACE_SYSCALLS
81#define TRACE_SYSCALLS() VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \
82 *(__syscalls_metadata) \
83 VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
84#else
85#define TRACE_SYSCALLS()
86#endif
87
80/* .data section */ 88/* .data section */
81#define DATA_DATA \ 89#define DATA_DATA \
82 *(.data) \ 90 *(.data) \
@@ -99,7 +107,8 @@
99 LIKELY_PROFILE() \ 107 LIKELY_PROFILE() \
100 BRANCH_PROFILE() \ 108 BRANCH_PROFILE() \
101 TRACE_PRINTKS() \ 109 TRACE_PRINTKS() \
102 FTRACE_EVENTS() 110 FTRACE_EVENTS() \
111 TRACE_SYSCALLS()
103 112
104#define RO_DATA(align) \ 113#define RO_DATA(align) \
105 . = ALIGN((align)); \ 114 . = ALIGN((align)); \