From aed1ae46b1db28c5b4e8054b5c55c281f7ea426e Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Wed, 2 Dec 2009 21:34:18 -0500 Subject: Added trace_seq_terminate Added trace_seq_terminate that zeros out the buffer if the buffer is not full. This is useful when data being returned may be used in a printf directly or more data will be added to the trace_seq. Signed-off-by: Steven Rostedt --- parse-events.c | 10 +++------- parse-events.h | 2 ++ trace-seq.c | 6 ++++++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/parse-events.c b/parse-events.c index 737bdde..7fad6eb 100644 --- a/parse-events.c +++ b/parse-events.c @@ -2881,8 +2881,7 @@ void pevent_data_lat_fmt(struct trace_seq *s, void *data, int size __unused) else trace_seq_printf(s, "%d", lock_depth); - if (!s->full) - trace_seq_putc(s, 0); + trace_seq_terminate(s); } int pevent_data_type(void *data) @@ -2916,8 +2915,7 @@ void pevent_event_info(struct trace_seq *s, struct event *event, else pretty_print(s, data, size, event); - if (!s->full) - trace_seq_putc(s, 0); + trace_seq_terminate(s); } void pevent_print_event(struct trace_seq *s, @@ -2959,9 +2957,7 @@ void pevent_print_event(struct trace_seq *s, else pretty_print(s, data, size, event); - if (!s->full) - trace_seq_putc(s, 0); - + trace_seq_terminate(s); } static int events_id_cmp(const void *a, const void *b) diff --git a/parse-events.h b/parse-events.h index edd2292..4459b52 100644 --- a/parse-events.h +++ b/parse-events.h @@ -42,6 +42,8 @@ extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args) extern int trace_seq_puts(struct trace_seq *s, const char *str); extern int trace_seq_putc(struct trace_seq *s, unsigned char c); +extern void trace_seq_terminate(struct trace_seq *s); + extern int trace_seq_do_printf(struct trace_seq *s); diff --git a/trace-seq.c b/trace-seq.c index 3143bbb..5fb474a 100644 --- a/trace-seq.c +++ b/trace-seq.c @@ -126,6 +126,12 @@ int trace_seq_putc(struct trace_seq *s, unsigned char c) return 1; } +void trace_seq_terminate(struct trace_seq *s) +{ + if (!s->full) + s->buffer[s->len] = 0; +} + int trace_seq_do_printf(struct trace_seq *s) { return printf("%.*s%s", s->len, s->buffer, -- cgit v1.2.2