tracing: add schedule events to event trace
This patch changes the trace/sched.h to use the DECLARE_TRACE_FMT such that they are automatically registered with the event tracer. And it also adds the tracing sched headers to kernel/trace/events.c Signed-off-by: Steven Rostedt <srostedt@redhat.com>
This commit is contained in:
parent
b77e38aa24
commit
f3fe8e4a38
|
@ -4,53 +4,6 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/tracepoint.h>
|
#include <linux/tracepoint.h>
|
||||||
|
|
||||||
DECLARE_TRACE(sched_kthread_stop,
|
#include <trace/sched_event_types.h>
|
||||||
TPPROTO(struct task_struct *t),
|
|
||||||
TPARGS(t));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_kthread_stop_ret,
|
|
||||||
TPPROTO(int ret),
|
|
||||||
TPARGS(ret));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_wait_task,
|
|
||||||
TPPROTO(struct rq *rq, struct task_struct *p),
|
|
||||||
TPARGS(rq, p));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_wakeup,
|
|
||||||
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
|
||||||
TPARGS(rq, p, success));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_wakeup_new,
|
|
||||||
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
|
||||||
TPARGS(rq, p, success));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_switch,
|
|
||||||
TPPROTO(struct rq *rq, struct task_struct *prev,
|
|
||||||
struct task_struct *next),
|
|
||||||
TPARGS(rq, prev, next));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_migrate_task,
|
|
||||||
TPPROTO(struct task_struct *p, int orig_cpu, int dest_cpu),
|
|
||||||
TPARGS(p, orig_cpu, dest_cpu));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_process_free,
|
|
||||||
TPPROTO(struct task_struct *p),
|
|
||||||
TPARGS(p));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_process_exit,
|
|
||||||
TPPROTO(struct task_struct *p),
|
|
||||||
TPARGS(p));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_process_wait,
|
|
||||||
TPPROTO(struct pid *pid),
|
|
||||||
TPARGS(pid));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_process_fork,
|
|
||||||
TPPROTO(struct task_struct *parent, struct task_struct *child),
|
|
||||||
TPARGS(parent, child));
|
|
||||||
|
|
||||||
DECLARE_TRACE(sched_signal_send,
|
|
||||||
TPPROTO(int sig, struct task_struct *p),
|
|
||||||
TPARGS(sig, p));
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
|
||||||
|
/* use <trace/sched.h> instead */
|
||||||
|
#ifndef DEFINE_TRACE_FMT
|
||||||
|
# error Do not include this file directly.
|
||||||
|
# error Unless you know what you are doing.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_kthread_stop,
|
||||||
|
TPPROTO(struct task_struct *t),
|
||||||
|
TPARGS(t),
|
||||||
|
TPFMT("task %s:%d", t->comm, t->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_kthread_stop_ret,
|
||||||
|
TPPROTO(int ret),
|
||||||
|
TPARGS(ret),
|
||||||
|
TPFMT("ret=%d", ret));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_wait_task,
|
||||||
|
TPPROTO(struct rq *rq, struct task_struct *p),
|
||||||
|
TPARGS(rq, p),
|
||||||
|
TPFMT("task %s:%d", p->comm, p->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_wakeup,
|
||||||
|
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
||||||
|
TPARGS(rq, p, success),
|
||||||
|
TPFMT("task %s:%d %s",
|
||||||
|
p->comm, p->pid, success?"succeeded":"failed"));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_wakeup_new,
|
||||||
|
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
||||||
|
TPARGS(rq, p, success),
|
||||||
|
TPFMT("task %s:%d",
|
||||||
|
p->comm, p->pid, success?"succeeded":"failed"));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_switch,
|
||||||
|
TPPROTO(struct rq *rq, struct task_struct *prev,
|
||||||
|
struct task_struct *next),
|
||||||
|
TPARGS(rq, prev, next),
|
||||||
|
TPFMT("task %s:%d ==> %s:%d",
|
||||||
|
prev->comm, prev->pid, next->comm, next->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_migrate_task,
|
||||||
|
TPPROTO(struct task_struct *p, int orig_cpu, int dest_cpu),
|
||||||
|
TPARGS(p, orig_cpu, dest_cpu),
|
||||||
|
TPFMT("task %s:%d from: %d to: %d",
|
||||||
|
p->comm, p->pid, orig_cpu, dest_cpu));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_process_free,
|
||||||
|
TPPROTO(struct task_struct *p),
|
||||||
|
TPARGS(p),
|
||||||
|
TPFMT("task %s:%d", p->comm, p->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_process_exit,
|
||||||
|
TPPROTO(struct task_struct *p),
|
||||||
|
TPARGS(p),
|
||||||
|
TPFMT("task %s:%d", p->comm, p->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_process_wait,
|
||||||
|
TPPROTO(struct pid *pid),
|
||||||
|
TPARGS(pid),
|
||||||
|
TPFMT("pid %d", pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_process_fork,
|
||||||
|
TPPROTO(struct task_struct *parent, struct task_struct *child),
|
||||||
|
TPARGS(parent, child),
|
||||||
|
TPFMT("parent %s:%d child %s:%d",
|
||||||
|
parent->comm, parent->pid, child->comm, child->pid));
|
||||||
|
|
||||||
|
DEFINE_TRACE_FMT(sched_signal_send,
|
||||||
|
TPPROTO(int sig, struct task_struct *p),
|
||||||
|
TPARGS(sig, p),
|
||||||
|
TPFMT("sig: %d task %s:%d", sig, p->comm, p->pid));
|
|
@ -39,5 +39,6 @@ obj-$(CONFIG_KMEMTRACE) += kmemtrace.o
|
||||||
obj-$(CONFIG_WORKQUEUE_TRACER) += trace_workqueue.o
|
obj-$(CONFIG_WORKQUEUE_TRACER) += trace_workqueue.o
|
||||||
obj-$(CONFIG_BLK_DEV_IO_TRACE) += blktrace.o
|
obj-$(CONFIG_BLK_DEV_IO_TRACE) += blktrace.o
|
||||||
obj-$(CONFIG_EVENT_TRACER) += trace_events.o
|
obj-$(CONFIG_EVENT_TRACER) += trace_events.o
|
||||||
|
obj-$(CONFIG_EVENT_TRACER) += events.o
|
||||||
|
|
||||||
libftrace-y := ftrace.o
|
libftrace-y := ftrace.o
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* This is the place to register all trace points as events.
|
||||||
|
* Include the trace/<type>.h at the top.
|
||||||
|
* Include the trace/<type>_event_types.h at the bottom.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* trace/<type>.h here */
|
||||||
|
#include <trace/sched.h>
|
||||||
|
|
||||||
|
#include "trace_events.h"
|
||||||
|
|
||||||
|
/* trace/<type>_event_types.h here */
|
||||||
|
#include <trace/sched_event_types.h>
|
Loading…
Reference in New Issue