Commit | Line | Data |
---|---|---|
e42c4f49 FD |
1 | /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) |
2 | * | |
3 | * lttng-syscalls-exit-compat-table.c | |
4 | * | |
5 | * LTTng syscall exit compat probes. | |
6 | * | |
7 | * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
8 | * Copyright (C) 2021 Francis Deslauriers <francis.deslauriers@efficios.com> | |
9 | */ | |
10 | ||
11 | #include <wrapper/tracepoint.h> | |
12 | ||
13 | #include "lttng-syscalls.h" | |
14 | ||
15 | ||
16 | #ifdef IA32_NR_syscalls | |
17 | #define NR_compat_syscalls IA32_NR_syscalls | |
18 | #else | |
19 | #define NR_compat_syscalls NR_syscalls | |
20 | #endif | |
21 | ||
22 | /* | |
23 | * Create LTTng tracepoint probes. | |
24 | */ | |
25 | #define LTTNG_PACKAGE_BUILD | |
26 | #define CREATE_TRACE_POINTS | |
27 | #define TP_MODULE_NOINIT | |
28 | #define TRACE_INCLUDE_PATH instrumentation/syscalls/headers | |
29 | ||
30 | #define PARAMS(args...) args | |
31 | ||
32 | #define SC_EXIT | |
33 | ||
34 | #undef sc_in | |
4667f7f6 | 35 | #define sc_in(...) |
e42c4f49 | 36 | #undef sc_out |
4667f7f6 | 37 | #define sc_out(...) __VA_ARGS__ |
e42c4f49 | 38 | #undef sc_inout |
4667f7f6 | 39 | #define sc_inout(...) __VA_ARGS__ |
e42c4f49 FD |
40 | #undef sc_exit |
41 | #define sc_exit(...) __VA_ARGS__ | |
42 | ||
43 | #define LTTNG_TRACEPOINT_TYPE_EXTERN | |
44 | ||
45 | #include <lttng/events-reset.h> | |
46 | ||
47 | /* Hijack probe callback for system call compat exit */ | |
48 | #undef TP_PROBE_CB | |
49 | #define LTTNG_SC_COMPAT | |
50 | #define TP_PROBE_CB(_template) &syscall_exit_event_probe | |
51 | #define SC_LTTNG_TRACEPOINT_EVENT(_name, _proto, _args, _fields) \ | |
52 | LTTNG_TRACEPOINT_EVENT(compat_syscall_exit_##_name, PARAMS(_proto), PARAMS(_args), \ | |
53 | PARAMS(_fields)) | |
54 | #define SC_LTTNG_TRACEPOINT_EVENT_CODE(_name, _proto, _args, _locvar, _code_pre, _fields, _code_post) \ | |
55 | LTTNG_TRACEPOINT_EVENT_CODE(compat_syscall_exit_##_name, PARAMS(_proto), PARAMS(_args), \ | |
56 | PARAMS(_locvar), PARAMS(_code_pre), \ | |
57 | PARAMS(_fields), PARAMS(_code_post)) | |
58 | #define SC_LTTNG_TRACEPOINT_EVENT_CLASS_NOARGS(_name, _fields) \ | |
59 | LTTNG_TRACEPOINT_EVENT_CLASS_NOARGS(compat_syscall_exit_##_name, PARAMS(_fields)) | |
60 | #define SC_LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS(_template, _name) \ | |
61 | LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS(compat_syscall_exit_##_template, compat_syscall_exit_##_name) | |
62 | ||
63 | #define SC_LTTNG_TRACEPOINT_ENUM(_name, _values) \ | |
64 | LTTNG_TRACEPOINT_ENUM(_name, PARAMS(_values)) | |
65 | #undef TRACE_SYSTEM | |
66 | #define TRACE_SYSTEM compat_syscall_exit_integers | |
67 | #define TRACE_INCLUDE_FILE compat_syscalls_integers | |
68 | #include <instrumentation/syscalls/headers/syscalls_integers.h> | |
69 | #undef TRACE_INCLUDE_FILE | |
70 | #undef TRACE_SYSTEM | |
71 | #define TRACE_SYSTEM compat_syscall_exit_pointers | |
72 | #define TRACE_INCLUDE_FILE compat_syscalls_pointers | |
73 | #include <instrumentation/syscalls/headers/syscalls_pointers.h> | |
74 | #undef TRACE_INCLUDE_FILE | |
75 | #undef TRACE_SYSTEM | |
76 | #undef SC_LTTNG_TRACEPOINT_ENUM | |
77 | #undef SC_LTTNG_TRACEPOINT_EVENT_CODE | |
78 | #undef SC_LTTNG_TRACEPOINT_EVENT | |
79 | #undef SC_LTTNG_TRACEPOINT_EVENT_CLASS_NOARGS | |
80 | #undef SC_LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS | |
81 | #undef TP_PROBE_CB | |
82 | #undef _TRACE_SYSCALLS_INTEGERS_H | |
83 | #undef _TRACE_SYSCALLS_POINTERS_H | |
84 | #undef LTTNG_SC_COMPAT | |
85 | ||
86 | #define CREATE_SYSCALL_TABLE | |
87 | ||
88 | #undef sc_exit | |
89 | #define sc_exit(...) | |
90 | ||
91 | #undef TRACE_SYSCALL_TABLE | |
92 | #define TRACE_SYSCALL_TABLE(_template, _name, _nr, _nrargs) \ | |
93 | [ _nr ] = { \ | |
94 | .event_func = __event_probe__compat_syscall_exit_##_template, \ | |
95 | .nrargs = (_nrargs), \ | |
96 | .fields = __event_fields___compat_syscall_exit_##_template, \ | |
97 | .desc = &__event_desc___compat_syscall_exit_##_name, \ | |
98 | }, | |
99 | ||
100 | /* Event compat syscall exit table */ | |
101 | const struct trace_syscall_entry _compat_sc_exit_table[] = { | |
102 | #include <instrumentation/syscalls/headers/compat_syscalls_integers.h> | |
103 | #include <instrumentation/syscalls/headers/compat_syscalls_pointers.h> | |
104 | }; | |
105 | ||
106 | const struct trace_syscall_table compat_sc_exit_table = { | |
107 | .table = _compat_sc_exit_table, | |
108 | .len = ARRAY_SIZE(_compat_sc_exit_table), | |
109 | }; | |
110 | ||
111 | #undef SC_EXIT | |
112 | ||
113 | #undef CREATE_SYSCALL_TABLE |