diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 15 | ||||
| -rw-r--r-- | kernel/trace/trace_events.c | 24 | ||||
| -rw-r--r-- | kernel/trace/trace_export.c | 25 | ||||
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 20 |
4 files changed, 48 insertions, 36 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index d4ff01970547..e43c928356ee 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -397,18 +397,21 @@ int ring_buffer_print_page_header(struct trace_seq *s) | |||
| 397 | int ret; | 397 | int ret; |
| 398 | 398 | ||
| 399 | ret = trace_seq_printf(s, "\tfield: u64 timestamp;\t" | 399 | ret = trace_seq_printf(s, "\tfield: u64 timestamp;\t" |
| 400 | "offset:0;\tsize:%u;\n", | 400 | "offset:0;\tsize:%u;\tsigned:%u;\n", |
| 401 | (unsigned int)sizeof(field.time_stamp)); | 401 | (unsigned int)sizeof(field.time_stamp), |
| 402 | (unsigned int)is_signed_type(u64)); | ||
| 402 | 403 | ||
| 403 | ret = trace_seq_printf(s, "\tfield: local_t commit;\t" | 404 | ret = trace_seq_printf(s, "\tfield: local_t commit;\t" |
| 404 | "offset:%u;\tsize:%u;\n", | 405 | "offset:%u;\tsize:%u;\tsigned:%u;\n", |
| 405 | (unsigned int)offsetof(typeof(field), commit), | 406 | (unsigned int)offsetof(typeof(field), commit), |
| 406 | (unsigned int)sizeof(field.commit)); | 407 | (unsigned int)sizeof(field.commit), |
| 408 | (unsigned int)is_signed_type(long)); | ||
| 407 | 409 | ||
| 408 | ret = trace_seq_printf(s, "\tfield: char data;\t" | 410 | ret = trace_seq_printf(s, "\tfield: char data;\t" |
| 409 | "offset:%u;\tsize:%u;\n", | 411 | "offset:%u;\tsize:%u;\tsigned:%u;\n", |
| 410 | (unsigned int)offsetof(typeof(field), data), | 412 | (unsigned int)offsetof(typeof(field), data), |
| 411 | (unsigned int)BUF_PAGE_SIZE); | 413 | (unsigned int)BUF_PAGE_SIZE, |
| 414 | (unsigned int)is_signed_type(char)); | ||
| 412 | 415 | ||
| 413 | return ret; | 416 | return ret; |
| 414 | } | 417 | } |
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index d128f65778e6..cf3cabf6ce14 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -507,7 +507,7 @@ extern char *__bad_type_size(void); | |||
| 507 | #define FIELD(type, name) \ | 507 | #define FIELD(type, name) \ |
| 508 | sizeof(type) != sizeof(field.name) ? __bad_type_size() : \ | 508 | sizeof(type) != sizeof(field.name) ? __bad_type_size() : \ |
| 509 | #type, "common_" #name, offsetof(typeof(field), name), \ | 509 | #type, "common_" #name, offsetof(typeof(field), name), \ |
| 510 | sizeof(field.name) | 510 | sizeof(field.name), is_signed_type(type) |
| 511 | 511 | ||
| 512 | static int trace_write_header(struct trace_seq *s) | 512 | static int trace_write_header(struct trace_seq *s) |
| 513 | { | 513 | { |
| @@ -515,17 +515,17 @@ static int trace_write_header(struct trace_seq *s) | |||
| 515 | 515 | ||
| 516 | /* struct trace_entry */ | 516 | /* struct trace_entry */ |
| 517 | return trace_seq_printf(s, | 517 | return trace_seq_printf(s, |
| 518 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 518 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" |
| 519 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 519 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" |
| 520 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 520 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" |
| 521 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 521 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" |
| 522 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 522 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" |
| 523 | "\n", | 523 | "\n", |
| 524 | FIELD(unsigned short, type), | 524 | FIELD(unsigned short, type), |
| 525 | FIELD(unsigned char, flags), | 525 | FIELD(unsigned char, flags), |
| 526 | FIELD(unsigned char, preempt_count), | 526 | FIELD(unsigned char, preempt_count), |
| 527 | FIELD(int, pid), | 527 | FIELD(int, pid), |
| 528 | FIELD(int, lock_depth)); | 528 | FIELD(int, lock_depth)); |
| 529 | } | 529 | } |
| 530 | 530 | ||
| 531 | static ssize_t | 531 | static ssize_t |
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index 9753fcc61bc5..31da218ee10f 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
| @@ -66,44 +66,47 @@ static void __used ____ftrace_check_##name(void) \ | |||
| 66 | #undef __field | 66 | #undef __field |
| 67 | #define __field(type, item) \ | 67 | #define __field(type, item) \ |
| 68 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ | 68 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ |
| 69 | "offset:%zu;\tsize:%zu;\n", \ | 69 | "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ |
| 70 | offsetof(typeof(field), item), \ | 70 | offsetof(typeof(field), item), \ |
| 71 | sizeof(field.item)); \ | 71 | sizeof(field.item), is_signed_type(type)); \ |
| 72 | if (!ret) \ | 72 | if (!ret) \ |
| 73 | return 0; | 73 | return 0; |
| 74 | 74 | ||
| 75 | #undef __field_desc | 75 | #undef __field_desc |
| 76 | #define __field_desc(type, container, item) \ | 76 | #define __field_desc(type, container, item) \ |
| 77 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ | 77 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ |
| 78 | "offset:%zu;\tsize:%zu;\n", \ | 78 | "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ |
| 79 | offsetof(typeof(field), container.item), \ | 79 | offsetof(typeof(field), container.item), \ |
| 80 | sizeof(field.container.item)); \ | 80 | sizeof(field.container.item), \ |
| 81 | is_signed_type(type)); \ | ||
| 81 | if (!ret) \ | 82 | if (!ret) \ |
| 82 | return 0; | 83 | return 0; |
| 83 | 84 | ||
| 84 | #undef __array | 85 | #undef __array |
| 85 | #define __array(type, item, len) \ | 86 | #define __array(type, item, len) \ |
| 86 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ | 87 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ |
| 87 | "offset:%zu;\tsize:%zu;\n", \ | 88 | "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ |
| 88 | offsetof(typeof(field), item), \ | 89 | offsetof(typeof(field), item), \ |
| 89 | sizeof(field.item)); \ | 90 | sizeof(field.item), is_signed_type(type)); \ |
| 90 | if (!ret) \ | 91 | if (!ret) \ |
| 91 | return 0; | 92 | return 0; |
| 92 | 93 | ||
| 93 | #undef __array_desc | 94 | #undef __array_desc |
| 94 | #define __array_desc(type, container, item, len) \ | 95 | #define __array_desc(type, container, item, len) \ |
| 95 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ | 96 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ |
| 96 | "offset:%zu;\tsize:%zu;\n", \ | 97 | "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ |
| 97 | offsetof(typeof(field), container.item), \ | 98 | offsetof(typeof(field), container.item), \ |
| 98 | sizeof(field.container.item)); \ | 99 | sizeof(field.container.item), \ |
| 100 | is_signed_type(type)); \ | ||
| 99 | if (!ret) \ | 101 | if (!ret) \ |
| 100 | return 0; | 102 | return 0; |
| 101 | 103 | ||
| 102 | #undef __dynamic_array | 104 | #undef __dynamic_array |
| 103 | #define __dynamic_array(type, item) \ | 105 | #define __dynamic_array(type, item) \ |
| 104 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ | 106 | ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ |
| 105 | "offset:%zu;\tsize:0;\n", \ | 107 | "offset:%zu;\tsize:0;\tsigned:%u;\n", \ |
| 106 | offsetof(typeof(field), item)); \ | 108 | offsetof(typeof(field), item), \ |
| 109 | is_signed_type(type)); \ | ||
| 107 | if (!ret) \ | 110 | if (!ret) \ |
| 108 | return 0; | 111 | return 0; |
| 109 | 112 | ||
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 527e17eae575..d99abc427c39 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
| @@ -103,7 +103,8 @@ extern char *__bad_type_size(void); | |||
| 103 | #define SYSCALL_FIELD(type, name) \ | 103 | #define SYSCALL_FIELD(type, name) \ |
| 104 | sizeof(type) != sizeof(trace.name) ? \ | 104 | sizeof(type) != sizeof(trace.name) ? \ |
| 105 | __bad_type_size() : \ | 105 | __bad_type_size() : \ |
| 106 | #type, #name, offsetof(typeof(trace), name), sizeof(trace.name) | 106 | #type, #name, offsetof(typeof(trace), name), \ |
| 107 | sizeof(trace.name), is_signed_type(type) | ||
| 107 | 108 | ||
| 108 | int syscall_enter_format(struct ftrace_event_call *call, struct trace_seq *s) | 109 | int syscall_enter_format(struct ftrace_event_call *call, struct trace_seq *s) |
| 109 | { | 110 | { |
| @@ -120,7 +121,8 @@ int syscall_enter_format(struct ftrace_event_call *call, struct trace_seq *s) | |||
| 120 | if (!entry) | 121 | if (!entry) |
| 121 | return 0; | 122 | return 0; |
| 122 | 123 | ||
| 123 | ret = trace_seq_printf(s, "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n", | 124 | ret = trace_seq_printf(s, "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" |
| 125 | "\tsigned:%u;\n", | ||
| 124 | SYSCALL_FIELD(int, nr)); | 126 | SYSCALL_FIELD(int, nr)); |
| 125 | if (!ret) | 127 | if (!ret) |
| 126 | return 0; | 128 | return 0; |
| @@ -130,8 +132,10 @@ int syscall_enter_format(struct ftrace_event_call *call, struct trace_seq *s) | |||
| 130 | entry->args[i]); | 132 | entry->args[i]); |
| 131 | if (!ret) | 133 | if (!ret) |
| 132 | return 0; | 134 | return 0; |
| 133 | ret = trace_seq_printf(s, "\toffset:%d;\tsize:%zu;\n", offset, | 135 | ret = trace_seq_printf(s, "\toffset:%d;\tsize:%zu;" |
| 134 | sizeof(unsigned long)); | 136 | "\tsigned:%u;\n", offset, |
| 137 | sizeof(unsigned long), | ||
| 138 | is_signed_type(unsigned long)); | ||
| 135 | if (!ret) | 139 | if (!ret) |
| 136 | return 0; | 140 | return 0; |
| 137 | offset += sizeof(unsigned long); | 141 | offset += sizeof(unsigned long); |
| @@ -163,8 +167,10 @@ int syscall_exit_format(struct ftrace_event_call *call, struct trace_seq *s) | |||
| 163 | struct syscall_trace_exit trace; | 167 | struct syscall_trace_exit trace; |
| 164 | 168 | ||
| 165 | ret = trace_seq_printf(s, | 169 | ret = trace_seq_printf(s, |
| 166 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n" | 170 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" |
| 167 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\n", | 171 | "\tsigned:%u;\n" |
| 172 | "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" | ||
| 173 | "\tsigned:%u;\n", | ||
| 168 | SYSCALL_FIELD(int, nr), | 174 | SYSCALL_FIELD(int, nr), |
| 169 | SYSCALL_FIELD(long, ret)); | 175 | SYSCALL_FIELD(long, ret)); |
| 170 | if (!ret) | 176 | if (!ret) |
| @@ -212,7 +218,7 @@ int syscall_exit_define_fields(struct ftrace_event_call *call) | |||
| 212 | if (ret) | 218 | if (ret) |
| 213 | return ret; | 219 | return ret; |
| 214 | 220 | ||
| 215 | ret = trace_define_field(call, SYSCALL_FIELD(long, ret), 0, | 221 | ret = trace_define_field(call, SYSCALL_FIELD(long, ret), |
| 216 | FILTER_OTHER); | 222 | FILTER_OTHER); |
| 217 | 223 | ||
| 218 | return ret; | 224 | return ret; |
