837991a6a1667c127715c6affb14c5f1dc569f67
[lttng-modules.git] / instrumentation / syscalls / headers / x86-64-syscalls-3.10.0-rc7_pointers_override.h
1 #ifndef CREATE_SYSCALL_TABLE
2
3 #define OVERRIDE_64_connect
4 SC_LTTNG_TRACEPOINT_EVENT_CODE(connect,
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];
12 unsigned int v4addr_len, v6addr_len;
13 ),
14 TP_code_pre(
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);
32 if (copy_from_user(tp_locvar->v6addr,
33 &((struct sockaddr_in6 *) uservaddr)->sin6_addr.in6_u.u6_addr8,
34 sizeof(tp_locvar->v6addr)))
35 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
36 tp_locvar->v6addr_len = 8;
37 break;
38 }
39 skip_code:
40 )
41 ),
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))
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))
51 ),
52 TP_code_post()
53 )
54
55 #define OVERRIDE_64_accept
56 SC_LTTNG_TRACEPOINT_EVENT_CODE(accept,
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 ),
67 TP_code_pre(
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);
88 if (copy_from_user(tp_locvar->v6addr,
89 &((struct sockaddr_in6 *) upeer_sockaddr)->sin6_addr.in6_u.u6_addr8,
90 sizeof(tp_locvar->v6addr)))
91 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
92 tp_locvar->v6addr_len = 8;
93 break;
94 }
95 skip_code:
96 )
97 ),
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))
105 sc_in(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
106 sc_in(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
107 ),
108 TP_code_post()
109 )
110
111 #define OVERRIDE_64_pipe
112 SC_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
120 #else /* CREATE_SYSCALL_TABLE */
121
122 #define OVERRIDE_TABLE_64_clone
123 TRACE_SYSCALL_TABLE(clone, clone, 56, 5)
124 #define OVERRIDE_TABLE_64_execve
125 TRACE_SYSCALL_TABLE(execve, execve, 59, 3)
126 #define OVERRIDE_TABLE_64_getcpu
127 TRACE_SYSCALL_TABLE(getcpu, getcpu, 309, 3)
128
129 #endif /* CREATE_SYSCALL_TABLE */
This page took 0.032509 seconds and 3 git commands to generate.