tracing: create the C style tracing for the sched subsystem

This patch utilizes the TRACE_EVENT_FORMAT macro to enable the C style
faster tracing for the sched subsystem trace points.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
This commit is contained in:
Steven Rostedt 2009-02-28 02:47:59 -05:00
parent fd99498989
commit 629928041c
2 changed files with 97 additions and 25 deletions

View File

@ -157,4 +157,7 @@ static inline void tracepoint_synchronize_unregister(void)
#define TRACE_FORMAT(name, proto, args, fmt) \
DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
#define TRACE_EVENT_FORMAT(name, proto, args, fmt, struct, tpfmt) \
TRACE_FORMAT(name, PARAMS(proto), PARAMS(args), PARAMS(fmt))
#endif

View File

@ -1,6 +1,6 @@
/* use <trace/sched.h> instead */
#ifndef TRACE_FORMAT
#ifndef TRACE_EVENT_FORMAT
# error Do not include this file directly.
# error Unless you know what you are doing.
#endif
@ -8,70 +8,139 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sched
TRACE_FORMAT(sched_kthread_stop,
TRACE_EVENT_FORMAT(sched_kthread_stop,
TPPROTO(struct task_struct *t),
TPARGS(t),
TPFMT("task %s:%d", t->comm, t->pid));
TPFMT("task %s:%d", t->comm, t->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, t->pid)
),
TPRAWFMT("task %d")
);
TRACE_FORMAT(sched_kthread_stop_ret,
TRACE_EVENT_FORMAT(sched_kthread_stop_ret,
TPPROTO(int ret),
TPARGS(ret),
TPFMT("ret=%d", ret));
TPFMT("ret=%d", ret),
TRACE_STRUCT(
TRACE_FIELD(int, ret, ret)
),
TPRAWFMT("ret=%d")
);
TRACE_FORMAT(sched_wait_task,
TRACE_EVENT_FORMAT(sched_wait_task,
TPPROTO(struct rq *rq, struct task_struct *p),
TPARGS(rq, p),
TPFMT("task %s:%d", p->comm, p->pid));
TPFMT("task %s:%d", p->comm, p->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
),
TPRAWFMT("task %d")
);
TRACE_FORMAT(sched_wakeup,
TRACE_EVENT_FORMAT(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"));
p->comm, p->pid, success ? "succeeded" : "failed"),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
TRACE_FIELD(int, success, success)
),
TPRAWFMT("task %d success=%d")
);
TRACE_FORMAT(sched_wakeup_new,
TRACE_EVENT_FORMAT(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"));
p->comm, p->pid, success ? "succeeded" : "failed"),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
TRACE_FIELD(int, success, success)
),
TPRAWFMT("task %d success=%d")
);
TRACE_FORMAT(sched_switch,
TRACE_EVENT_FORMAT(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));
prev->comm, prev->pid, next->comm, next->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, prev_pid, prev->pid)
TRACE_FIELD(int, prev_prio, prev->prio)
TRACE_FIELD(pid_t, next_pid, next->pid)
TRACE_FIELD(int, next_prio, next->prio)
),
TPRAWFMT("prev %d:%d ==> next %d:%d")
);
TRACE_FORMAT(sched_migrate_task,
TRACE_EVENT_FORMAT(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));
p->comm, p->pid, orig_cpu, dest_cpu),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
TRACE_FIELD(int, orig_cpu, orig_cpu)
TRACE_FIELD(int, dest_cpu, dest_cpu)
),
TPRAWFMT("task %d from: %d to: %d")
);
TRACE_FORMAT(sched_process_free,
TRACE_EVENT_FORMAT(sched_process_free,
TPPROTO(struct task_struct *p),
TPARGS(p),
TPFMT("task %s:%d", p->comm, p->pid));
TPFMT("task %s:%d", p->comm, p->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
),
TPRAWFMT("task %d")
);
TRACE_FORMAT(sched_process_exit,
TRACE_EVENT_FORMAT(sched_process_exit,
TPPROTO(struct task_struct *p),
TPARGS(p),
TPFMT("task %s:%d", p->comm, p->pid));
TPFMT("task %s:%d", p->comm, p->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, p->pid)
),
TPRAWFMT("task %d")
);
TRACE_FORMAT(sched_process_wait,
TRACE_EVENT_FORMAT(sched_process_wait,
TPPROTO(struct pid *pid),
TPARGS(pid),
TPFMT("pid %d", pid));
TPFMT("pid %d", pid_nr(pid)),
TRACE_STRUCT(
TRACE_FIELD(pid_t, pid, pid_nr(pid))
),
TPRAWFMT("task %d")
);
TRACE_FORMAT(sched_process_fork,
TRACE_EVENT_FORMAT(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));
parent->comm, parent->pid, child->comm, child->pid),
TRACE_STRUCT(
TRACE_FIELD(pid_t, parent, parent->pid)
TRACE_FIELD(pid_t, child, child->pid)
),
TPRAWFMT("parent %d child %d")
);
TRACE_FORMAT(sched_signal_send,
TRACE_EVENT_FORMAT(sched_signal_send,
TPPROTO(int sig, struct task_struct *p),
TPARGS(sig, p),
TPFMT("sig: %d task %s:%d", sig, p->comm, p->pid));
TPFMT("sig: %d task %s:%d", sig, p->comm, p->pid),
TRACE_STRUCT(
TRACE_FIELD(int, sig, sig)
TRACE_FIELD(pid_t, pid, p->pid)
),
TPRAWFMT("sig: %d task %d")
);
#undef TRACE_SYSTEM