Messages in this thread Patch in this message | | | Date | Mon, 2 Nov 2015 14:58:16 +0900 | From | Sergey Senozhatsky <> | Subject | Re: linux-next: Tree for Nov 2 |
| |
On (11/02/15 15:40), Stephen Rothwell wrote: > Hi all, > > Changes since 20151101: >
Hi,
unregister_trace_sched_switch/register_trace_prio_sched_switch/etc. (see the log below. 80-cols unfriendly. sorry.) expect proto to contain 'bool preempt'
TRACE_EVENT(sched_switch,
TP_PROTO(bool preempt, struct task_struct *prev, struct task_struct *next),
event_filter_pid_sched_switch_probe_post() and event_filter_pid_sched_switch_probe_pre() are missing it. which results in:
kernel/trace/trace_events.c: In function ‘__ftrace_clear_event_pids’: kernel/trace/trace_events.c:579:32: warning: passing argument 1 of ‘unregister_trace_sched_switch’ from incompatible pointer type [-Wincompatible-pointer-types] unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_pre, tr); ^ In file included from include/trace/events/sched.h:8:0, from kernel/trace/trace_events.c:25: include/linux/tracepoint.h:223:2: note: expected ‘void (*)(void *, bool, struct task_struct *, struct task_struct *) {aka void (*)(void *, _Bool, struct task_struct *, struct task_struct *)}’ but argument is of type ‘void (*)(void *, struct task_struct *, struct task_struct *)’ unregister_trace_##name(void (*probe)(data_proto), void *data) \ ^ include/linux/tracepoint.h:357:3: note: in expansion of macro ‘__DECLARE_TRACE’ __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ ^ include/linux/tracepoint.h:491:2: note: in expansion of macro ‘DECLARE_TRACE’ DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) ^ include/trace/events/sched.h:124:1: note: in expansion of macro ‘TRACE_EVENT’ TRACE_EVENT(sched_switch, ^ kernel/trace/trace_events.c:580:32: warning: passing argument 1 of ‘unregister_trace_sched_switch’ from incompatible pointer type [-Wincompatible-pointer-types] unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_post, tr); ^ In file included from include/trace/events/sched.h:8:0, from kernel/trace/trace_events.c:25: include/linux/tracepoint.h:223:2: note: expected ‘void (*)(void *, bool, struct task_struct *, struct task_struct *) {aka void (*)(void *, _Bool, struct task_struct *, struct task_struct *)}’ but argument is of type ‘void (*)(void *, struct task_struct *, struct task_struct *)’ unregister_trace_##name(void (*probe)(data_proto), void *data) \ ^ include/linux/tracepoint.h:357:3: note: in expansion of macro ‘__DECLARE_TRACE’ __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ ^ include/linux/tracepoint.h:491:2: note: in expansion of macro ‘DECLARE_TRACE’ DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) ^ include/trace/events/sched.h:124:1: note: in expansion of macro ‘TRACE_EVENT’ TRACE_EVENT(sched_switch, ^ kernel/trace/trace_events.c: In function ‘ftrace_event_pid_write’: kernel/trace/trace_events.c:1723:36: warning: passing argument 1 of ‘register_trace_prio_sched_switch’ from incompatible pointer type [-Wincompatible-pointer-types] register_trace_prio_sched_switch(event_filter_pid_sched_switch_probe_pre, ^ In file included from include/trace/events/sched.h:8:0, from kernel/trace/trace_events.c:25: include/linux/tracepoint.h:216:2: note: expected ‘void (*)(void *, bool, struct task_struct *, struct task_struct *) {aka void (*)(void *, _Bool, struct task_struct *, struct task_struct *)}’ but argument is of type ‘void (*)(void *, struct task_struct *, struct task_struct *)’ register_trace_prio_##name(void (*probe)(data_proto), void *data,\ ^ include/linux/tracepoint.h:357:3: note: in expansion of macro ‘__DECLARE_TRACE’ __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ ^ include/linux/tracepoint.h:491:2: note: in expansion of macro ‘DECLARE_TRACE’ DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) ^ include/trace/events/sched.h:124:1: note: in expansion of macro ‘TRACE_EVENT’ TRACE_EVENT(sched_switch, ^ kernel/trace/trace_events.c:1725:36: warning: passing argument 1 of ‘register_trace_prio_sched_switch’ from incompatible pointer type [-Wincompatible-pointer-types] register_trace_prio_sched_switch(event_filter_pid_sched_switch_probe_post, ^ In file included from include/trace/events/sched.h:8:0, from kernel/trace/trace_events.c:25: include/linux/tracepoint.h:216:2: note: expected ‘void (*)(void *, bool, struct task_struct *, struct task_struct *) {aka void (*)(void *, _Bool, struct task_struct *, struct task_struct *)}’ but argument is of type ‘void (*)(void *, struct task_struct *, struct task_struct *)’ register_trace_prio_##name(void (*probe)(data_proto), void *data,\ ^ include/linux/tracepoint.h:357:3: note: in expansion of macro ‘__DECLARE_TRACE’ __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ ^ include/linux/tracepoint.h:491:2: note: in expansion of macro ‘DECLARE_TRACE’ DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) ^ include/trace/events/sched.h:124:1: note: in expansion of macro ‘TRACE_EVENT’ TRACE_EVENT(sched_switch,
something like this, I guess.
===8<===8<===8<===8<===
Add missing 'bool preempt' argument as required by sched_switch's trace event proto:
: TRACE_EVENT(sched_switch, : : TP_PROTO(bool preempt, : struct task_struct *prev, : struct task_struct *next), ...
to event_filter_pid_sched_switch_probe_post() and event_filter_pid_sched_switch_probe_pre() functions.
kernel/trace/trace_events.c: In function ‘__ftrace_clear_event_pids’: kernel/trace/trace_events.c:579:32: warning: passing argument 1 of ‘unregister_trace_sched_switch’ from incompatible pointer type [-Wincompatible-pointer-types] unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_pre, tr); ^ In file included from include/trace/events/sched.h:8:0, from kernel/trace/trace_events.c:25: include/linux/tracepoint.h:223:2: note: expected ‘void (*)(void *, bool, struct task_struct *, struct task_struct *) {aka void (*)(void *, _Bool, struct task_struct *, struct task_struct *)}’ but argument is of type ‘void (*)(void *, struct task_struct *, struct task_struct *)’ unregister_trace_##name(void (*probe)(data_proto), void *data) \ ^ include/linux/tracepoint.h:357:3: note: in expansion of macro ‘__DECLARE_TRACE’ __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ ^ include/linux/tracepoint.h:491:2: note: in expansion of macro ‘DECLARE_TRACE’ DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) ^ include/trace/events/sched.h:124:1: note: in expansion of macro ‘TRACE_EVENT’ TRACE_EVENT(sched_switch, ^
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> --- kernel/trace/trace_events.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index fb0261e..0d86f0c 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -506,7 +506,7 @@ check_ignore_pid(struct trace_pid_list *filtered_pids, struct task_struct *task) } static void -event_filter_pid_sched_switch_probe_pre(void *data, +event_filter_pid_sched_switch_probe_pre(void *data, bool preempt, struct task_struct *prev, struct task_struct *next) { struct trace_array *tr = data; @@ -520,7 +520,7 @@ event_filter_pid_sched_switch_probe_pre(void *data, } static void -event_filter_pid_sched_switch_probe_post(void *data, +event_filter_pid_sched_switch_probe_post(void *data, bool preempt, struct task_struct *prev, struct task_struct *next) { struct trace_array *tr = data; -- 2.6.2.402.g2635c2b
| |