[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20151102173023.52237c7f@canb.auug.org.au>
Date: Mon, 2 Nov 2015 17:30:23 +1100
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>
Cc: Steven Rostedt <rostedt@...dmis.org>, linux-next@...r.kernel.org,
linux-kernel@...r.kernel.org, Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...e.hu>, "H. Peter Anvin" <hpa@...or.com>,
Peter Zijlstra <peterz@...radead.org>
Subject: Re: linux-next: Tree for Nov 2
Hi Sergey,
[Excess quoted for new cc's]
On Mon, 2 Nov 2015 14:58:16 +0900 Sergey Senozhatsky <sergey.senozhatsky.work@...il.com> wrote:
>
> 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,
Presumably caused by the interaction of commit
3fdaf80f4a83 ("tracing: Implement event pid filtering")
from the trace tree and commit
c73464b1c843 ("sched/core: Fix trace_sched_switch()")
from the tip tree.
> 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@...il.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
So I guess I need that (or something similar) in linux-next until these
trees are merged.
--
Cheers,
Stephen Rothwell sfr@...b.auug.org.au
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists