Add script to automate the syscall extraction process
[lttng-modules.git] / instrumentation / syscalls / headers / x86-64-syscalls-3.10.0-rc7_pointers_override.h
CommitLineData
cac8f1aa
MD
1#ifndef CREATE_SYSCALL_TABLE
2
7ca580f8 3#define OVERRIDE_64_connect
cb3ef14c 4SC_LTTNG_TRACEPOINT_EVENT_CODE(connect,
bcf18411 5 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * uservaddr, int addrlen),
7ca580f8
MD
6 TP_ARGS(sc_exit(ret,) fd, uservaddr, addrlen),
7 TP_locvar(
8 __typeof__(uservaddr->sa_family) sa_family;
9 uint16_t dport;
10 uint32_t v4addr;
11 uint16_t v6addr[8];
5e6f60b2 12 unsigned int v4addr_len, v6addr_len;
7ca580f8 13 ),
265822ae 14 TP_code_pre(
7ca580f8
MD
15 sc_in(
16 memset(tp_locvar, 0, sizeof(*tp_locvar));
5a561ac3 17 if (addrlen < sizeof(tp_locvar->sa_family))
7ca580f8 18 goto skip_code;
bcf18411
MD
19 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sa_family,
20 &uservaddr->sa_family, sizeof(tp_locvar->sa_family));
7ca580f8
MD
21 switch (tp_locvar->sa_family) {
22 case AF_INET:
23 if (addrlen < sizeof(struct sockaddr_in))
24 goto skip_code;
bcf18411
MD
25 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->dport,
26 &((struct sockaddr_in __user *) uservaddr)->sin_port,
27 sizeof(tp_locvar->dport));
28 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->v4addr,
29 &((struct sockaddr_in __user *) uservaddr)->sin_addr.s_addr,
30 sizeof(tp_locvar->v4addr));
7ca580f8
MD
31 tp_locvar->v4addr_len = 4;
32 break;
33 case AF_INET6:
34 if (addrlen < sizeof(struct sockaddr_in6))
35 goto skip_code;
bcf18411
MD
36 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->dport,
37 &((struct sockaddr_in6 __user *) uservaddr)->sin6_port,
38 sizeof(tp_locvar->dport));
39 if (lib_ring_buffer_copy_from_user_check_nofault(tp_locvar->v6addr,
40 &((struct sockaddr_in6 __user *) uservaddr)->sin6_addr.in6_u.u6_addr8,
b43aa94e
MD
41 sizeof(tp_locvar->v6addr)))
42 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
7ca580f8
MD
43 tp_locvar->v6addr_len = 8;
44 break;
45 }
46 skip_code:
47 )
48 ),
57ede728
MD
49 TP_FIELDS(
50 sc_exit(ctf_integer(long, ret, ret))
51 sc_in(ctf_integer(int, fd, fd))
52 sc_in(ctf_integer_hex(struct sockaddr *, uservaddr, uservaddr))
53 sc_in(ctf_integer_hex(int, addrlen, addrlen))
205f99b0 54 sc_in(ctf_integer(unsigned short, family, tp_locvar->sa_family))
57ede728 55 sc_in(ctf_integer_network(uint16_t, dport, tp_locvar->dport))
5e6f60b2
MD
56 sc_in(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
57 sc_in(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
58 ),
59 TP_code_post()
7ca580f8
MD
60)
61
223d33f2
JG
62#define LTTNG_SYSCALL_ACCEPT_locvar \
63 __typeof__(upeer_sockaddr->sa_family) sa_family;\
64 uint16_t sport; \
65 uint32_t v4addr; \
66 uint16_t v6addr[8]; \
67 int v4addr_len, v6addr_len; \
68 int uaddr_len;
69
70#define LTTNG_SYSCALL_ACCEPT_code_pre \
71 sc_inout( \
72 memset(tp_locvar, 0, sizeof(*tp_locvar)); \
bcf18411
MD
73 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->uaddr_len, \
74 upeer_addrlen, sizeof(tp_locvar->uaddr_len)); \
223d33f2
JG
75 ) \
76 sc_out( \
5a561ac3 77 if (tp_locvar->uaddr_len < sizeof(tp_locvar->sa_family)) \
223d33f2 78 goto skip_code; \
bcf18411
MD
79 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sa_family, \
80 &upeer_sockaddr->sa_family, sizeof(tp_locvar->sa_family)); \
223d33f2
JG
81 switch (tp_locvar->sa_family) { \
82 case AF_INET: \
83 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in)) \
84 goto skip_code; \
bcf18411
MD
85 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sport, \
86 &((struct sockaddr_in __user *) upeer_sockaddr)->sin_port, \
87 sizeof(tp_locvar->sport)); \
88 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->v4addr, \
89 &((struct sockaddr_in __user *) upeer_sockaddr)->sin_addr.s_addr, \
90 sizeof(tp_locvar->v4addr)); \
223d33f2
JG
91 tp_locvar->v4addr_len = 4; \
92 break; \
93 case AF_INET6: \
94 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in6)) \
95 goto skip_code; \
bcf18411
MD
96 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sport, \
97 &((struct sockaddr_in6 __user *) upeer_sockaddr)->sin6_port, \
98 sizeof(tp_locvar->sport)); \
99 if (lib_ring_buffer_copy_from_user_check_nofault(tp_locvar->v6addr, \
100 &((struct sockaddr_in6 __user *) upeer_sockaddr)->sin6_addr.in6_u.u6_addr8, \
223d33f2
JG
101 sizeof(tp_locvar->v6addr))) \
102 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr)); \
103 tp_locvar->v6addr_len = 8; \
104 break; \
105 } \
106 skip_code: \
107 )
108
7ca580f8 109#define OVERRIDE_64_accept
cb3ef14c 110SC_LTTNG_TRACEPOINT_EVENT_CODE(accept,
bcf18411 111 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * upeer_sockaddr, int __user * upeer_addrlen),
7ca580f8
MD
112 TP_ARGS(sc_exit(ret,) fd, upeer_sockaddr, upeer_addrlen),
113 TP_locvar(
223d33f2 114 LTTNG_SYSCALL_ACCEPT_locvar
7ca580f8 115 ),
265822ae 116 TP_code_pre(
223d33f2 117 LTTNG_SYSCALL_ACCEPT_code_pre
7ca580f8 118 ),
57ede728
MD
119 TP_FIELDS(
120 sc_exit(ctf_integer(long, ret, ret))
121 sc_in(ctf_integer(int, fd, fd))
122 sc_in(ctf_integer_hex(struct sockaddr *, upeer_sockaddr, upeer_sockaddr))
123 sc_inout(ctf_integer(int, upeer_addrlen, tp_locvar->uaddr_len))
205f99b0 124 sc_out(ctf_integer(unsigned short, family, tp_locvar->sa_family))
57ede728 125 sc_out(ctf_integer_network(uint16_t, sport, tp_locvar->sport))
b0f393f2
MD
126 sc_out(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
127 sc_out(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
128 ),
129 TP_code_post()
7ca580f8
MD
130)
131
2a837c70
JG
132#define OVERRIDE_64_accept4
133SC_LTTNG_TRACEPOINT_EVENT_CODE(accept4,
bcf18411 134 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * upeer_sockaddr, int __user * upeer_addrlen, int flags),
2a837c70
JG
135 TP_ARGS(sc_exit(ret,) fd, upeer_sockaddr, upeer_addrlen, flags),
136 TP_locvar(
223d33f2 137 LTTNG_SYSCALL_ACCEPT_locvar
2a837c70
JG
138 ),
139 TP_code_pre(
223d33f2 140 LTTNG_SYSCALL_ACCEPT_code_pre
2a837c70
JG
141 ),
142 TP_FIELDS(
143 sc_exit(ctf_integer(long, ret, ret))
144 sc_in(ctf_integer(int, fd, fd))
145 sc_in(ctf_integer_hex(struct sockaddr *, upeer_sockaddr, upeer_sockaddr))
146 sc_inout(ctf_integer(int, upeer_addrlen, tp_locvar->uaddr_len))
147 sc_in(ctf_integer_hex(int, flags, flags))
205f99b0 148 sc_out(ctf_integer(unsigned short, family, tp_locvar->sa_family))
2a837c70
JG
149 sc_out(ctf_integer_network(uint16_t, sport, tp_locvar->sport))
150 sc_out(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
151 sc_out(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
152 ),
153 TP_code_post()
154)
155
5539ecc8
LP
156#define OVERRIDE_64_pipe
157SC_LTTNG_TRACEPOINT_EVENT(pipe,
158 TP_PROTO(sc_exit(long ret,) int * fildes),
159 TP_ARGS(sc_exit(ret,) fildes),
160 TP_FIELDS(sc_exit(ctf_integer(long, ret, ret))
161 sc_out(ctf_user_array(int, fildes, fildes, 2))
162 )
163)
164
cac8f1aa
MD
165#else /* CREATE_SYSCALL_TABLE */
166
644d6e9c
MD
167#define OVERRIDE_TABLE_64_clone
168TRACE_SYSCALL_TABLE(clone, clone, 56, 5)
169#define OVERRIDE_TABLE_64_execve
170TRACE_SYSCALL_TABLE(execve, execve, 59, 3)
171#define OVERRIDE_TABLE_64_getcpu
172TRACE_SYSCALL_TABLE(getcpu, getcpu, 309, 3)
e42e81fd 173
cac8f1aa 174#endif /* CREATE_SYSCALL_TABLE */
This page took 0.042548 seconds and 4 git commands to generate.