LTTng modules now builds again
[lttng-modules.git] / discard / ltt-type-serializer.h
1 #ifndef _LTT_TYPE_SERIALIZER_H
2 #define _LTT_TYPE_SERIALIZER_H
3
4 #include <linux/if.h> /* For IFNAMSIZ */
5
6 #include "ltt-tracer.h"
7
8 /*
9 * largest_align must be non-zero, equal to the minimum between the largest type
10 * and sizeof(void *).
11 */
12 extern void _ltt_specialized_trace(void *probe_data,
13 void *serialize_private, unsigned int data_size,
14 unsigned int largest_align);
15
16 /*
17 * Statically check that 0 < largest_align < sizeof(void *) to make sure it is
18 * dumb-proof. It will make sure 0 is changed into 1 and unsigned long long is
19 * changed into sizeof(void *) on 32-bit architectures.
20 */
21 static inline void ltt_specialized_trace(void *probe_data,
22 void *serialize_private, unsigned int data_size,
23 unsigned int largest_align)
24 {
25 largest_align = min_t(unsigned int, largest_align, sizeof(void *));
26 largest_align = max_t(unsigned int, largest_align, 1);
27 _ltt_specialized_trace(probe_data, serialize_private, data_size,
28 largest_align);
29 }
30
31 /*
32 * Type serializer definitions.
33 */
34
35 /*
36 * Return size of structure without end-of-structure padding.
37 */
38 #define serialize_sizeof(type) offsetof(typeof(type), end_field)
39
40 struct serialize_long_int {
41 unsigned long f1;
42 unsigned int f2;
43 unsigned char end_field[0];
44 } RING_BUFFER_ALIGN_ATTR;
45
46 struct serialize_int_int_long {
47 unsigned int f1;
48 unsigned int f2;
49 unsigned long f3;
50 unsigned char end_field[0];
51 } RING_BUFFER_ALIGN_ATTR;
52
53 struct serialize_int_int_short {
54 unsigned int f1;
55 unsigned int f2;
56 unsigned short f3;
57 unsigned char end_field[0];
58 } RING_BUFFER_ALIGN_ATTR;
59
60 struct serialize_long_long_long {
61 unsigned long f1;
62 unsigned long f2;
63 unsigned long f3;
64 unsigned char end_field[0];
65 } RING_BUFFER_ALIGN_ATTR;
66
67 struct serialize_long_long_int {
68 unsigned long f1;
69 unsigned long f2;
70 unsigned int f3;
71 unsigned char end_field[0];
72 } RING_BUFFER_ALIGN_ATTR;
73
74 struct serialize_long_long_short_char {
75 unsigned long f1;
76 unsigned long f2;
77 unsigned short f3;
78 unsigned char f4;
79 unsigned char end_field[0];
80 } RING_BUFFER_ALIGN_ATTR;
81
82 struct serialize_long_long_short {
83 unsigned long f1;
84 unsigned long f2;
85 unsigned short f3;
86 unsigned char end_field[0];
87 } RING_BUFFER_ALIGN_ATTR;
88
89 struct serialize_long_short_char {
90 unsigned long f1;
91 unsigned short f2;
92 unsigned char f3;
93 unsigned char end_field[0];
94 } RING_BUFFER_ALIGN_ATTR;
95
96 struct serialize_long_short {
97 unsigned long f1;
98 unsigned short f2;
99 unsigned char end_field[0];
100 } RING_BUFFER_ALIGN_ATTR;
101
102 struct serialize_long_char {
103 unsigned long f1;
104 unsigned char f2;
105 unsigned char end_field[0];
106 } RING_BUFFER_ALIGN_ATTR;
107
108 struct serialize_long_ifname {
109 unsigned long f1;
110 unsigned char f2[IFNAMSIZ];
111 unsigned char end_field[0];
112 } RING_BUFFER_ALIGN_ATTR;
113
114 struct serialize_sizet_int {
115 size_t f1;
116 unsigned int f2;
117 unsigned char end_field[0];
118 } RING_BUFFER_ALIGN_ATTR;
119
120 struct serialize_long_long_sizet_int {
121 unsigned long f1;
122 unsigned long f2;
123 size_t f3;
124 unsigned int f4;
125 unsigned char end_field[0];
126 } RING_BUFFER_ALIGN_ATTR;
127
128 struct serialize_long_long_sizet_int_int {
129 unsigned long f1;
130 unsigned long f2;
131 size_t f3;
132 unsigned int f4;
133 unsigned int f5;
134 unsigned char end_field[0];
135 } RING_BUFFER_ALIGN_ATTR;
136
137 struct serialize_l4421224411111 {
138 unsigned long f1;
139 uint32_t f2;
140 uint32_t f3;
141 uint16_t f4;
142 uint8_t f5;
143 uint16_t f6;
144 uint16_t f7;
145 uint32_t f8;
146 uint32_t f9;
147 uint8_t f10;
148 uint8_t f11;
149 uint8_t f12;
150 uint8_t f13;
151 uint8_t f14;
152 unsigned char end_field[0];
153 } RING_BUFFER_ALIGN_ATTR;
154
155 struct serialize_l214421224411111 {
156 unsigned long f1;
157 uint16_t f2;
158 uint8_t f3;
159 uint32_t f4;
160 uint32_t f5;
161 uint16_t f6;
162 uint8_t f7;
163 uint16_t f8;
164 uint16_t f9;
165 uint32_t f10;
166 uint32_t f11;
167 uint8_t f12;
168 uint8_t f13;
169 uint8_t f14;
170 uint8_t f15;
171 uint8_t f16;
172 uint8_t end_field[0];
173 } RING_BUFFER_ALIGN_ATTR;
174
175 struct serialize_l4412228 {
176 unsigned long f1;
177 uint32_t f2;
178 uint32_t f3;
179 uint8_t f4;
180 uint16_t f5;
181 uint16_t f6;
182 uint16_t f7;
183 uint64_t f8;
184 unsigned char end_field[0];
185 } RING_BUFFER_ALIGN_ATTR;
186 #endif /* _LTT_TYPE_SERIALIZER_H */
This page took 0.033644 seconds and 4 git commands to generate.