From: Oleg Nesterov <oleg@redhat.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@redhat.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
"zhangwei(Jovi)" <jovi.zhangwei@huawei.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] tracing/perf: Avoid perf_trace_buf_*() in perf_trace_##call() when possible
Date: Wed, 19 Jun 2013 20:12:11 +0200 [thread overview]
Message-ID: <20130619181211.GA28363@redhat.com> (raw)
In-Reply-To: <1371585773.18733.45.camel@gandalf.local.home>
On 06/18, Steven Rostedt wrote:
>
> On Tue, 2013-06-18 at 21:22 +0200, Oleg Nesterov wrote:
> > @@ -663,6 +663,12 @@ perf_trace_##call(void *__data, proto) \
> > int rctx; \
> > \
> > __data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
> > + \
> > + head = this_cpu_ptr(event_call->perf_events); \
> > + if (__builtin_constant_p(!__task) && !__task && \
>
>
> I'm trying to wrap my head around this:
>
> __builtin_constant_p(!task)
>
> is this the same as:
>
> !__builtin_constant_p(task)
>
> Or is it the same as:
>
> __builtin_constant_p(task)
>
> ?
>
> Because that '!' is confusing the heck out of me.
>
> If !task is a constant, wouldn't task be a constant too, and if task is
> not a constant then I would also assume !task is not a constant as well.
!__task looks more explicit/symmetrical to me. We need
if (is_compile_time_true(!__task)) && list_empty)
return;
is_compile_time_true(cond) could be defined as
__builtin_constant_p(cond) && (cond)
or
__builtin_constant_p(!cond) && (cond)
but the 1ts one looks more clean.
However,
> If this is the case, can we nuke the '!' from the builtin_consant_p().
OK, I do not really mind, will do.
And,
> Or is this your way to confuse me as much as my code has confused
> you? ;-)
Of course! this was the main reason.
Steven, I convinced myself the patch should be correct. If you agree with
this hack:
- anything else I should do apart from the change above?
- should I resend the previous "[PATCH 0/3] tracing: more
list_empty(perf_events) checks" series?
This series depends on "[PATCH 3/3] tracing/perf: Move the
PERF_MAX_TRACE_SIZE check into perf_trace_buf_prepare()".
Or I can drop this patch if you do not like it and rediff.
Just in case, there are other pending patches in trace_kprobe.c
which I am going to resend, but they are orthogonal.
Oleg.
next prev parent reply other threads:[~2013-06-19 18:17 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-18 19:21 [PATCH 0/3] tracing/perf: perf_trace_buf/perf_xxx hacks Oleg Nesterov
2013-06-18 19:22 ` [PATCH 1/3] tracing/perf: expand TRACE_EVENT(sched_stat_runtime) Oleg Nesterov
2013-06-18 19:22 ` [PATCH 2/3] tracing/perf: reimplement TP_perf_assign() logic Oleg Nesterov
2013-06-18 19:22 ` [PATCH 3/3] tracing/perf: Avoid perf_trace_buf_*() in perf_trace_##call() when possible Oleg Nesterov
2013-06-18 20:02 ` Steven Rostedt
2013-06-19 18:12 ` Oleg Nesterov [this message]
2013-06-19 18:24 ` Steven Rostedt
2013-06-19 12:10 ` [PATCH 0/3] tracing/perf: perf_trace_buf/perf_xxx hacks Peter Zijlstra
2013-06-19 15:28 ` Oleg Nesterov
2013-06-19 17:51 ` Oleg Nesterov
2013-06-19 18:50 ` David Ahern
2013-06-19 19:58 ` Oleg Nesterov
2013-06-20 18:23 ` Steven Rostedt
2013-06-20 18:35 ` David Ahern
2013-06-20 18:47 ` Steven Rostedt
2013-06-20 18:53 ` David Ahern
2013-06-20 18:53 ` Steven Rostedt
2013-06-20 22:20 ` Steven Rostedt
2013-07-18 3:06 ` Steven Rostedt
-- strict thread matches above, loose matches on Subject: below --
2013-07-18 18:30 [PATCH RESEND 0/3] Teach perf_trace_##call() to check hlist_empty(perf_events) Oleg Nesterov
2013-07-18 18:30 ` [PATCH 3/3] tracing/perf: Avoid perf_trace_buf_*() in perf_trace_##call() when possible Oleg Nesterov
2013-08-05 16:50 [PATCH 0/3] Teach perf_trace_##call() to check hlist_empty(perf_events) Oleg Nesterov
2013-08-05 16:51 ` [PATCH 3/3] tracing/perf: Avoid perf_trace_buf_*() in perf_trace_##call() when possible Oleg Nesterov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130619181211.GA28363@redhat.com \
--to=oleg@redhat.com \
--cc=fweisbec@gmail.com \
--cc=jovi.zhangwei@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=srikar@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.