Messages in this thread Patch in this message | | | Date | Wed, 09 Dec 2009 15:15:18 +0800 | From | Lai Jiangshan <> | Subject | [PATCH 02/10] trace_syscalls: fix SYSCALL_DEFINE0 |
| |
struct syscall_metadata variable name in SYSCALL_DEFINE0 is not the same as SYSCALL_DEFINE1/2/3/4/5/6.
SYSCALL_TRACE_ENTER_EVENT() and SYSCALL_TRACE_EXIT_EVENT() expect struct syscall_metadata's name is __syscall_meta__XXXXXX as SYSCALL_DEFINE1/2/3/4/5/6 defines.
It causes event_enter_##sname->data points to a wrong place. (event_enter_##sname->data points to a dummy struct syscall_metadata)
It causes syscalls which are defined by SYSCALL_DEFINE0() can not be traced.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> --- diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 55e7108..bee1d41 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -196,7 +196,7 @@ struct perf_event_attr; static const struct syscall_metadata __used \ __attribute__((__aligned__(4))) \ __attribute__((section("__syscalls_metadata"))) \ - __syscall_meta_##sname = { \ + __syscall_meta__##sname = { \ .name = "sys_"#sname, \ .nb_args = 0, \ .enter_event = &event_enter__##sname, \
| |