Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 659372d3 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt
Browse files

tracing: add trace_array_printk for internal tracers to use



This patch adds a trace_array_printk to allow a tracer to use the
trace_printk on its own trace array.

Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent e77405ad
Loading
Loading
Loading
Loading
+22 −2
Original line number Original line Diff line number Diff line
@@ -1201,7 +1201,23 @@ int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
}
}
EXPORT_SYMBOL_GPL(trace_vbprintk);
EXPORT_SYMBOL_GPL(trace_vbprintk);


int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
int trace_array_printk(struct trace_array *tr,
		       unsigned long ip, const char *fmt, ...)
{
	int ret;
	va_list ap;

	if (!(trace_flags & TRACE_ITER_PRINTK))
		return 0;

	va_start(ap, fmt);
	ret = trace_array_vprintk(tr, ip, fmt, ap);
	va_end(ap);
	return ret;
}

int trace_array_vprintk(struct trace_array *tr,
			unsigned long ip, const char *fmt, va_list args)
{
{
	static raw_spinlock_t trace_buf_lock = __RAW_SPIN_LOCK_UNLOCKED;
	static raw_spinlock_t trace_buf_lock = __RAW_SPIN_LOCK_UNLOCKED;
	static char trace_buf[TRACE_BUF_SIZE];
	static char trace_buf[TRACE_BUF_SIZE];
@@ -1209,7 +1225,6 @@ int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
	struct ftrace_event_call *call = &event_print;
	struct ftrace_event_call *call = &event_print;
	struct ring_buffer_event *event;
	struct ring_buffer_event *event;
	struct ring_buffer *buffer;
	struct ring_buffer *buffer;
	struct trace_array *tr = &global_trace;
	struct trace_array_cpu *data;
	struct trace_array_cpu *data;
	int cpu, len = 0, size, pc;
	int cpu, len = 0, size, pc;
	struct print_entry *entry;
	struct print_entry *entry;
@@ -1260,6 +1275,11 @@ int trace_vprintk(unsigned long ip, const char *fmt, va_list args)


	return len;
	return len;
}
}

int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
{
	return trace_array_printk(&global_trace, ip, fmt, args);
}
EXPORT_SYMBOL_GPL(trace_vprintk);
EXPORT_SYMBOL_GPL(trace_vprintk);


enum trace_file_type {
enum trace_file_type {
+5 −0
Original line number Original line Diff line number Diff line
@@ -566,6 +566,11 @@ extern int
trace_vbprintk(unsigned long ip, const char *fmt, va_list args);
trace_vbprintk(unsigned long ip, const char *fmt, va_list args);
extern int
extern int
trace_vprintk(unsigned long ip, const char *fmt, va_list args);
trace_vprintk(unsigned long ip, const char *fmt, va_list args);
extern int
trace_array_vprintk(struct trace_array *tr,
		    unsigned long ip, const char *fmt, va_list args);
int trace_array_printk(struct trace_array *tr,
		       unsigned long ip, const char *fmt, ...);


extern unsigned long trace_flags;
extern unsigned long trace_flags;