Fix: timer wrapper: support kernels >= 4.8
[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,
7ca580f8
MD
5 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr * uservaddr, int addrlen),
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));
17 if (addrlen < sizeof(struct sockaddr))
18 goto skip_code;
19 (void) get_user(tp_locvar->sa_family, &uservaddr->sa_family);
20 switch (tp_locvar->sa_family) {
21 case AF_INET:
22 if (addrlen < sizeof(struct sockaddr_in))
23 goto skip_code;
24 (void) get_user(tp_locvar->dport, &((struct sockaddr_in *) uservaddr)->sin_port);
25 (void) get_user(tp_locvar->v4addr, &((struct sockaddr_in *) uservaddr)->sin_addr.s_addr);
26 tp_locvar->v4addr_len = 4;
27 break;
28 case AF_INET6:
29 if (addrlen < sizeof(struct sockaddr_in6))
30 goto skip_code;
31 (void) get_user(tp_locvar->dport, &((struct sockaddr_in6 *) uservaddr)->sin6_port);
b43aa94e 32 if (copy_from_user(tp_locvar->v6addr,
7ca580f8 33 &((struct sockaddr_in6 *) uservaddr)->sin6_addr.in6_u.u6_addr8,
b43aa94e
MD
34 sizeof(tp_locvar->v6addr)))
35 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
7ca580f8
MD
36 tp_locvar->v6addr_len = 8;
37 break;
38 }
39 skip_code:
40 )
41 ),
57ede728
MD
42 TP_FIELDS(
43 sc_exit(ctf_integer(long, ret, ret))
44 sc_in(ctf_integer(int, fd, fd))
45 sc_in(ctf_integer_hex(struct sockaddr *, uservaddr, uservaddr))
46 sc_in(ctf_integer_hex(int, addrlen, addrlen))
47 sc_in(ctf_integer(int, family, tp_locvar->sa_family))
48 sc_in(ctf_integer_network(uint16_t, dport, tp_locvar->dport))
5e6f60b2
MD
49 sc_in(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
50 sc_in(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
51 ),
52 TP_code_post()
7ca580f8
MD
53)
54
55#define OVERRIDE_64_accept
cb3ef14c 56SC_LTTNG_TRACEPOINT_EVENT_CODE(accept,
7ca580f8
MD
57 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr * upeer_sockaddr, int * upeer_addrlen),
58 TP_ARGS(sc_exit(ret,) fd, upeer_sockaddr, upeer_addrlen),
59 TP_locvar(
60 __typeof__(upeer_sockaddr->sa_family) sa_family;
61 uint16_t sport;
62 uint32_t v4addr;
63 uint16_t v6addr[8];
64 int v4addr_len, v6addr_len;
65 int uaddr_len;
66 ),
265822ae 67 TP_code_pre(
7ca580f8
MD
68 sc_inout(
69 memset(tp_locvar, 0, sizeof(*tp_locvar));
70 (void) get_user(tp_locvar->uaddr_len, upeer_addrlen);
71 )
72 sc_out(
73 if (tp_locvar->uaddr_len < sizeof(struct sockaddr))
74 goto skip_code;
75 (void) get_user(tp_locvar->sa_family, &upeer_sockaddr->sa_family);
76 switch (tp_locvar->sa_family) {
77 case AF_INET:
78 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in))
79 goto skip_code;
80 (void) get_user(tp_locvar->sport, &((struct sockaddr_in *) upeer_sockaddr)->sin_port);
81 (void) get_user(tp_locvar->v4addr, &((struct sockaddr_in *) upeer_sockaddr)->sin_addr.s_addr);
82 tp_locvar->v4addr_len = 4;
83 break;
84 case AF_INET6:
85 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in6))
86 goto skip_code;
87 (void) get_user(tp_locvar->sport, &((struct sockaddr_in6 *) upeer_sockaddr)->sin6_port);
b43aa94e 88 if (copy_from_user(tp_locvar->v6addr,
7ca580f8 89 &((struct sockaddr_in6 *) upeer_sockaddr)->sin6_addr.in6_u.u6_addr8,
b43aa94e
MD
90 sizeof(tp_locvar->v6addr)))
91 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
7ca580f8
MD
92 tp_locvar->v6addr_len = 8;
93 break;
94 }
95 skip_code:
96 )
97 ),
57ede728
MD
98 TP_FIELDS(
99 sc_exit(ctf_integer(long, ret, ret))
100 sc_in(ctf_integer(int, fd, fd))
101 sc_in(ctf_integer_hex(struct sockaddr *, upeer_sockaddr, upeer_sockaddr))
102 sc_inout(ctf_integer(int, upeer_addrlen, tp_locvar->uaddr_len))
103 sc_out(ctf_integer(int, family, tp_locvar->sa_family))
104 sc_out(ctf_integer_network(uint16_t, sport, tp_locvar->sport))
b0f393f2
MD
105 sc_out(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
106 sc_out(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
107 ),
108 TP_code_post()
7ca580f8
MD
109)
110
5539ecc8
LP
111#define OVERRIDE_64_pipe
112SC_LTTNG_TRACEPOINT_EVENT(pipe,
113 TP_PROTO(sc_exit(long ret,) int * fildes),
114 TP_ARGS(sc_exit(ret,) fildes),
115 TP_FIELDS(sc_exit(ctf_integer(long, ret, ret))
116 sc_out(ctf_user_array(int, fildes, fildes, 2))
117 )
118)
119
cac8f1aa
MD
120#else /* CREATE_SYSCALL_TABLE */
121
644d6e9c
MD
122#define OVERRIDE_TABLE_64_clone
123TRACE_SYSCALL_TABLE(clone, clone, 56, 5)
124#define OVERRIDE_TABLE_64_execve
125TRACE_SYSCALL_TABLE(execve, execve, 59, 3)
126#define OVERRIDE_TABLE_64_getcpu
127TRACE_SYSCALL_TABLE(getcpu, getcpu, 309, 3)
e42e81fd 128
cac8f1aa 129#endif /* CREATE_SYSCALL_TABLE */
This page took 0.033973 seconds and 4 git commands to generate.