/** * seq_buf_printf - sequence printing of information * @s: seq_buf descriptor * @fmt: printf format string * * Writes a printf() format into the sequence buffer. * * Returns zero on success, -1 on overflow. */ int seq_buf_printf(struct seq_buf *s, const char *fmt, ...) { va_list ap; int ret; va_start(ap, fmt); ret = seq_buf_vprintf(s, fmt, ap); va_end(ap); return ret; }
/** * trace_seq_vprintf - sequence printing of trace information * @s: trace sequence descriptor * @fmt: printf format string * * The tracer may use either sequence operations or its own * copy to user routines. To simplify formating of a trace * trace_seq_printf is used to store strings into a special * buffer (@s). Then the output may be either used by * the sequencer or pulled into another buffer. */ void trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args) { unsigned int save_len = s->seq.len; if (s->full) return; __trace_seq_init(s); seq_buf_vprintf(&s->seq, fmt, args); /* If we can't write it all, don't bother writing anything */ if (unlikely(seq_buf_has_overflowed(&s->seq))) { s->seq.len = save_len; s->full = 1; } }