diff options
Diffstat (limited to 'kernel/trace/trace_output.c')
-rw-r--r-- | kernel/trace/trace_output.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index f572f44c6e1e..b6c12c6a1bcd 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -69,6 +69,9 @@ enum print_line_t trace_print_printk_msg_only(struct trace_iterator *iter) | |||
69 | * @s: trace sequence descriptor | 69 | * @s: trace sequence descriptor |
70 | * @fmt: printf format string | 70 | * @fmt: printf format string |
71 | * | 71 | * |
72 | * It returns 0 if the trace oversizes the buffer's free | ||
73 | * space, 1 otherwise. | ||
74 | * | ||
72 | * The tracer may use either sequence operations or its own | 75 | * The tracer may use either sequence operations or its own |
73 | * copy to user routines. To simplify formating of a trace | 76 | * copy to user routines. To simplify formating of a trace |
74 | * trace_seq_printf is used to store strings into a special | 77 | * trace_seq_printf is used to store strings into a special |
@@ -95,7 +98,7 @@ trace_seq_printf(struct trace_seq *s, const char *fmt, ...) | |||
95 | 98 | ||
96 | s->len += ret; | 99 | s->len += ret; |
97 | 100 | ||
98 | return len; | 101 | return 1; |
99 | } | 102 | } |
100 | EXPORT_SYMBOL_GPL(trace_seq_printf); | 103 | EXPORT_SYMBOL_GPL(trace_seq_printf); |
101 | 104 | ||
@@ -486,16 +489,18 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) | |||
486 | hardirq ? 'h' : softirq ? 's' : '.')) | 489 | hardirq ? 'h' : softirq ? 's' : '.')) |
487 | return 0; | 490 | return 0; |
488 | 491 | ||
489 | if (entry->lock_depth < 0) | 492 | if (entry->preempt_count) |
490 | ret = trace_seq_putc(s, '.'); | 493 | ret = trace_seq_printf(s, "%x", entry->preempt_count); |
491 | else | 494 | else |
492 | ret = trace_seq_printf(s, "%d", entry->lock_depth); | 495 | ret = trace_seq_putc(s, '.'); |
496 | |||
493 | if (!ret) | 497 | if (!ret) |
494 | return 0; | 498 | return 0; |
495 | 499 | ||
496 | if (entry->preempt_count) | 500 | if (entry->lock_depth < 0) |
497 | return trace_seq_printf(s, "%x", entry->preempt_count); | 501 | return trace_seq_putc(s, '.'); |
498 | return trace_seq_putc(s, '.'); | 502 | |
503 | return trace_seq_printf(s, "%d", entry->lock_depth); | ||
499 | } | 504 | } |
500 | 505 | ||
501 | static int | 506 | static int |
@@ -883,7 +888,7 @@ static int trace_ctxwake_raw(struct trace_iterator *iter, char S) | |||
883 | trace_assign_type(field, iter->ent); | 888 | trace_assign_type(field, iter->ent); |
884 | 889 | ||
885 | if (!S) | 890 | if (!S) |
886 | task_state_char(field->prev_state); | 891 | S = task_state_char(field->prev_state); |
887 | T = task_state_char(field->next_state); | 892 | T = task_state_char(field->next_state); |
888 | if (!trace_seq_printf(&iter->seq, "%d %d %c %d %d %d %c\n", | 893 | if (!trace_seq_printf(&iter->seq, "%d %d %c %d %d %d %c\n", |
889 | field->prev_pid, | 894 | field->prev_pid, |
@@ -918,7 +923,7 @@ static int trace_ctxwake_hex(struct trace_iterator *iter, char S) | |||
918 | trace_assign_type(field, iter->ent); | 923 | trace_assign_type(field, iter->ent); |
919 | 924 | ||
920 | if (!S) | 925 | if (!S) |
921 | task_state_char(field->prev_state); | 926 | S = task_state_char(field->prev_state); |
922 | T = task_state_char(field->next_state); | 927 | T = task_state_char(field->next_state); |
923 | 928 | ||
924 | SEQ_PUT_HEX_FIELD_RET(s, field->prev_pid); | 929 | SEQ_PUT_HEX_FIELD_RET(s, field->prev_pid); |