[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1346798509.27919.25.camel@gandalf.local.home>
Date: Tue, 04 Sep 2012 18:41:49 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Pedro Alves <palves@...hat.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Sasha Levin <levinsasha928@...il.com>,
Tejun Heo <tj@...nel.org>, torvalds@...ux-foundation.org,
akpm@...ux-foundation.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, paul.gortmaker@...driver.com,
davem@...emloft.net, mingo@...e.hu, ebiederm@...ssion.com,
aarcange@...hat.com, ericvh@...il.com, netdev@...r.kernel.org,
josh@...htriplett.org, eric.dumazet@...il.com, axboe@...nel.dk,
agk@...hat.com, dm-devel@...hat.com, neilb@...e.de,
ccaulfie@...hat.com, teigland@...hat.com,
Trond.Myklebust@...app.com, bfields@...ldses.org,
fweisbec@...il.com, jesse@...ira.com,
venkat.x.venkatsubra@...cle.com, ejt@...hat.com,
snitzer@...hat.com, edumazet@...gle.com, linux-nfs@...r.kernel.org,
dev@...nvswitch.org, rds-devel@....oracle.com, lw@...fujitsu.com
Subject: Re: [PATCH v3 01/17] hashtable: introduce a small and naive
hashtable
On Tue, 2012-09-04 at 22:51 +0100, Pedro Alves wrote:
> On 09/04/2012 09:59 PM, Steven Rostedt wrote:
> > On Tue, 2012-09-04 at 18:21 +0100, Pedro Alves wrote:
> >> On 09/04/2012 06:17 PM, Steven Rostedt wrote:
> >>> On Tue, 2012-09-04 at 17:40 +0100, Pedro Alves wrote:
> >>>
> >>>> BTW, you can also go a step further and remove the need to close with double }},
> >>>> with something like:
> >>>>
> >>>> #define do_for_each_ftrace_rec(pg, rec) \
> >>>> for (pg = ftrace_pages_start, rec = &pg->records[pg->index]; \
> >>>> pg && rec == &pg->records[pg->index]; \
> >>>> pg = pg->next) \
> >>>> for (rec = pg->records; rec < &pg->records[pg->index]; rec++)
> >>>>
> >>>
> >>> Yeah, but why bother? It's hidden in a macro, and the extra '{ }' shows
> >>> that this is something "special".
> >>
> >> The point of both changes is that there's nothing special in the end
> >> at all. It all just works...
> >>
> >
> > It would still fail on a 'break'. The 'while' macro tells us that it is
> > special, because in the end, it wont work.
>
> Please explain why it would fail on a 'break'.
>
Ah, I missed the condition with the rec == &pg->records[pg->index]. But
if ftrace_pages_start is NULL, the rec = &pg->records[pg->index] will
fault.
You could do something like rec = pg ? &pg->records[pg->index] : NULL,
but IIRC, the comma operator does not guarantee order evaluation. That
is, the compiler is allowed to process "a , b" as "b; a;" and not "a;
b;".
-- Steve
--
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