1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | /* Stage 4 definitions for creating trace events */ |
4 | |
5 | #define ALIGN_STRUCTFIELD(type) ((int)(__alignof__(struct {type b;}))) |
6 | |
7 | #undef __field_ext |
8 | #define __field_ext(_type, _item, _filter_type) { \ |
9 | .type = #_type, .name = #_item, \ |
10 | .size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type), \ |
11 | .is_signed = is_signed_type(_type), .filter_type = _filter_type }, |
12 | |
13 | #undef __field_struct_ext |
14 | #define __field_struct_ext(_type, _item, _filter_type) { \ |
15 | .type = #_type, .name = #_item, \ |
16 | .size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type), \ |
17 | 0, .filter_type = _filter_type }, |
18 | |
19 | #undef __field |
20 | #define __field(type, item) __field_ext(type, item, FILTER_OTHER) |
21 | |
22 | #undef __field_struct |
23 | #define __field_struct(type, item) __field_struct_ext(type, item, FILTER_OTHER) |
24 | |
25 | #undef __array |
26 | #define __array(_type, _item, _len) { \ |
27 | .type = #_type"["__stringify(_len)"]", .name = #_item, \ |
28 | .size = sizeof(_type[_len]), .align = ALIGN_STRUCTFIELD(_type), \ |
29 | .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER,\ |
30 | .len = _len }, |
31 | |
32 | #undef __dynamic_array |
33 | #define __dynamic_array(_type, _item, _len) { \ |
34 | .type = "__data_loc " #_type "[]", .name = #_item, \ |
35 | .size = 4, .align = 4, \ |
36 | .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER }, |
37 | |
38 | #undef __string |
39 | #define __string(item, src) __dynamic_array(char, item, -1) |
40 | |
41 | #undef __string_len |
42 | #define __string_len(item, src, len) __dynamic_array(char, item, -1) |
43 | |
44 | #undef __vstring |
45 | #define __vstring(item, fmt, ap) __dynamic_array(char, item, -1) |
46 | |
47 | #undef __bitmask |
48 | #define __bitmask(item, nr_bits) __dynamic_array(unsigned long, item, -1) |
49 | |
50 | #undef __cpumask |
51 | #define __cpumask(item) { \ |
52 | .type = "__data_loc cpumask_t", .name = #item, \ |
53 | .size = 4, .align = 4, \ |
54 | .is_signed = 0, .filter_type = FILTER_OTHER }, |
55 | |
56 | #undef __sockaddr |
57 | #define __sockaddr(field, len) __dynamic_array(u8, field, len) |
58 | |
59 | #undef __rel_dynamic_array |
60 | #define __rel_dynamic_array(_type, _item, _len) { \ |
61 | .type = "__rel_loc " #_type "[]", .name = #_item, \ |
62 | .size = 4, .align = 4, \ |
63 | .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER }, |
64 | |
65 | #undef __rel_string |
66 | #define __rel_string(item, src) __rel_dynamic_array(char, item, -1) |
67 | |
68 | #undef __rel_string_len |
69 | #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1) |
70 | |
71 | #undef __rel_bitmask |
72 | #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1) |
73 | |
74 | #undef __rel_cpumask |
75 | #define __rel_cpumask(item) { \ |
76 | .type = "__rel_loc cpumask_t", .name = #item, \ |
77 | .size = 4, .align = 4, \ |
78 | .is_signed = 0, .filter_type = FILTER_OTHER }, |
79 | |
80 | #undef __rel_sockaddr |
81 | #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len) |
82 | |