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:
Родитель
b77e38aa24
Коммит
f3fe8e4a38
|
@ -4,53 +4,6 @@
|
|||
#include <linux/sched.h>
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DECLARE_TRACE(sched_kthread_stop,
|
||||
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));
|
||||
#include <trace/sched_event_types.h>
|
||||
|
||||
#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_BLK_DEV_IO_TRACE) += blktrace.o
|
||||
obj-$(CONFIG_EVENT_TRACER) += trace_events.o
|
||||
obj-$(CONFIG_EVENT_TRACER) += events.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>
|
Загрузка…
Ссылка в новой задаче