Messages in this thread | | | Date | Fri, 02 Apr 2010 10:40:53 +0800 | From | Li Zefan <> | Subject | Re: [PATCH 1/2 v4] scsi: add __print_hex() to ftrace |
| |
>> +const char * >> +ftrace_print_hex_seq(struct trace_seq *p, const unsigned char *buf, int buf_len) >> +{ >> + int i; >> + const char *ret = p->buffer + p->len; >> + >> + for (i = 0; i < buf_len; i++) >> + trace_seq_printf(p, "%s%2.2x", i == 0 ? "" : " ", buf[i]); >> + >> + trace_seq_putc(p, 0); > > I would not put the putc(p, 0) into a helper function. This terminates > the buffer, and strings added to the trace_seq will go after the '\0'. >
This is exactly what ftrace_print_flags_seq() and ftrace_print_symbols_seq() do, and exactly what we want.
An example:
TP_printk("%s,%s", __print_flags(...), __print_flags(...));
We need 2 seperated strings, while trace_seq_terminate() will make it a single string.
> What we need is this in trace_seq.h: > > static inline trace_seq_terminate(struct trace_seq *s) > { > if (!s->full) > s->buffer[s->len] = 0; > } > > This will add a '0' to the buffer after the last string, but will not > increment length while doing it. Thus, new data added to the buffer > would still be appended correctly. > > -- Steve > >> + >> + return ret; >> +} >> +EXPORT_SYMBOL(ftrace_print_hex_seq);
| |