Loading include/asm-generic/vmlinux.lds.h +10 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ #define BRANCH_PROFILE() #endif #ifdef CONFIG_EVENT_TRACER #define FTRACE_EVENTS() VMLINUX_SYMBOL(__start_ftrace_events) = .; \ *(_ftrace_events) \ VMLINUX_SYMBOL(__stop_ftrace_events) = .; #else #define FTRACE_EVENTS() #endif /* .data section */ #define DATA_DATA \ *(.data) \ Loading @@ -81,7 +89,8 @@ *(__tracepoints) \ VMLINUX_SYMBOL(__stop___tracepoints) = .; \ LIKELY_PROFILE() \ BRANCH_PROFILE() BRANCH_PROFILE() \ FTRACE_EVENTS() #define RO_DATA(align) \ . = ALIGN((align)); \ Loading include/linux/tracepoint.h +3 −0 Original line number Diff line number Diff line Loading @@ -153,4 +153,7 @@ static inline void tracepoint_synchronize_unregister(void) synchronize_sched(); } #define DEFINE_TRACE_FMT(name, proto, args, fmt) \ DECLARE_TRACE(name, TPPROTO(proto), TPARGS(args)) #endif include/trace/sched.h +1 −48 Original line number Diff line number Diff line Loading @@ -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 include/trace/sched_event_types.h 0 → 100644 +72 −0 Original line number Diff line number Diff line /* 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)); kernel/trace/Kconfig +9 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,15 @@ config CONTEXT_SWITCH_TRACER This tracer gets called from the context switch and records all switching of tasks. config EVENT_TRACER bool "Trace various events in the kernel" depends on DEBUG_KERNEL select TRACING help This tracer hooks to various trace points in the kernel allowing the user to pick and choose which trace point they want to trace. config BOOT_TRACER bool "Trace boot initcalls" depends on DEBUG_KERNEL Loading Loading
include/asm-generic/vmlinux.lds.h +10 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ #define BRANCH_PROFILE() #endif #ifdef CONFIG_EVENT_TRACER #define FTRACE_EVENTS() VMLINUX_SYMBOL(__start_ftrace_events) = .; \ *(_ftrace_events) \ VMLINUX_SYMBOL(__stop_ftrace_events) = .; #else #define FTRACE_EVENTS() #endif /* .data section */ #define DATA_DATA \ *(.data) \ Loading @@ -81,7 +89,8 @@ *(__tracepoints) \ VMLINUX_SYMBOL(__stop___tracepoints) = .; \ LIKELY_PROFILE() \ BRANCH_PROFILE() BRANCH_PROFILE() \ FTRACE_EVENTS() #define RO_DATA(align) \ . = ALIGN((align)); \ Loading
include/linux/tracepoint.h +3 −0 Original line number Diff line number Diff line Loading @@ -153,4 +153,7 @@ static inline void tracepoint_synchronize_unregister(void) synchronize_sched(); } #define DEFINE_TRACE_FMT(name, proto, args, fmt) \ DECLARE_TRACE(name, TPPROTO(proto), TPARGS(args)) #endif
include/trace/sched.h +1 −48 Original line number Diff line number Diff line Loading @@ -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
include/trace/sched_event_types.h 0 → 100644 +72 −0 Original line number Diff line number Diff line /* 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));
kernel/trace/Kconfig +9 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,15 @@ config CONTEXT_SWITCH_TRACER This tracer gets called from the context switch and records all switching of tasks. config EVENT_TRACER bool "Trace various events in the kernel" depends on DEBUG_KERNEL select TRACING help This tracer hooks to various trace points in the kernel allowing the user to pick and choose which trace point they want to trace. config BOOT_TRACER bool "Trace boot initcalls" depends on DEBUG_KERNEL Loading