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); |
