From: Cesar Eduardo Barros <cesarb@cesarb.net>
To: Daniel Walker <dwalker@fifo99.com>
Cc: linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Roland Dreier <rolandd@cisco.com>
Subject: Re: [PATCH] WARN_ONCE(): use bool for boolean flag
Date: Sun, 27 Sep 2009 14:24:04 -0300 [thread overview]
Message-ID: <4ABF9FB4.6040608@cesarb.net> (raw)
In-Reply-To: <1254070336.20648.518.camel@desktop>
Daniel Walker escreveu:
> On Sun, 2009-09-27 at 12:56 -0300, Cesar Eduardo Barros wrote:
>> Daniel Walker escreveu:
>>> On Sun, 2009-09-27 at 10:53 -0300, Cesar Eduardo Barros wrote:
>>>> #define
>>>> WARN_ON_ONCE(condition) ({ \
>>>> - static int __warned; \
>>>> + static bool __warned; \
>>>> int __ret_warn_once = !!(condition); \
>>> Could __ret_warn_once be bool also ? It looks like just another
>>> conditional variable..
>> Yes, it could (as long as either it is converted back to int in the
>> return of the macro, or all users do not care about the macro's return
>> type). However, the justification used for the printk_once patch (and
>> this WARN_ONCE patch) does not apply directly anymore, since the code is
>> different (to start with, it is not a static variable).
>
> I did a couple kernel builds to test this on a small normal config,
>
> vmlinux.base-line
> text data bss dec hex filename
> 6718958 497200 1082460 8298618 7ea07a vmlinux.base-line
>
> vmlinux.one-bool <-- Your patch
> text data bss dec hex filename
> 6718590 497232 1082292 8298114 7e9e82 vmlinux.one-bool
I am still trying to understand why data increases (but not enough to
offset the gains on text and bss). My own testing had the same
qualitative result (x86-64 defconfig):
text data bss dec hex filename
8101271 1207116 992764 10301151 9d2edf vmlinux.warn.before
8100553 1207148 991988 10299689 9d2929 vmlinux.warn.after
> vmlinux.all-bool-converted
> text data bss dec hex filename
> 6718506 497232 1082292 8298030 7e9e2e vmlinux.all-converted
>
> your changes drops the size 368 bytes, and if you convert the other
> conditionals it drops it by another 84 bytes. Not much more, but it's
> something.
>
> So I think Rolands original reasoning still holds.. As far as people
> needing an int output from WARN_ON() , I'm not sure that's happening
> anyplace .. I can't imagine a sane usage for that..
I took a quick look, and all uses seem to be directly in a boolean
context (within an if()), so there would be no problem. Besides, the
unlikely() all these macros end with does a double negation, meaning
even if it is an int, it will be either 0 or 1 (but I am not sure I am
reading these macros right - it seems CONFIG_TRACE_BRANCH_PROFILING
turns all unlikely() into likely()).
In fact, I was expecting no change at all, since gcc should be able to
see it is being treated as a boolean (perhaps I am trusting gcc too
much). And to make matters even more confusing, my own test changing all
__ret_warn_once to bool and dropping the !! caused an _increase_ of 598
bytes (x86-64 defconfig).
text data bss dec hex filename
8100553 1207148 991988 10299689 9d2929 vmlinux.warnret.before
8101119 1207180 991988 10300287 9d2b7f vmlinux.warnret.after
(And yes, data increased again.)
--
Cesar Eduardo Barros
cesarb@cesarb.net
cesar.barros@gmail.com
next prev parent reply other threads:[~2009-09-27 17:24 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-27 13:53 [PATCH] WARN_ONCE(): use bool for boolean flag Cesar Eduardo Barros
2009-09-27 14:03 ` Daniel Walker
2009-09-27 15:56 ` Cesar Eduardo Barros
2009-09-27 16:52 ` Daniel Walker
2009-09-27 17:24 ` Cesar Eduardo Barros [this message]
2009-09-27 17:32 ` Daniel Walker
2009-09-27 17:48 ` Cesar Eduardo Barros
2009-09-27 18:12 ` Cesar Eduardo Barros
2009-09-27 18:25 ` [PATCH] WARN_ONCE(): use bool for condition Cesar Eduardo Barros
2009-09-27 18:28 ` Daniel Walker
2009-09-27 18:55 ` Cesar Eduardo Barros
2009-09-27 19:03 ` Daniel Walker
2009-09-29 20:59 ` Andrew Morton
2009-09-29 23:11 ` Cesar Eduardo Barros
2009-09-29 23:12 ` [PATCH] WARN_ONCE(): use bool for boolean flag Cesar Eduardo Barros
2009-09-30 0:17 ` Andrew Morton
2009-09-30 0:37 ` Cesar Eduardo Barros
2009-09-29 23:18 ` [PATCH] WARN_ONCE(): use bool for condition Cesar Eduardo Barros
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=4ABF9FB4.6040608@cesarb.net \
--to=cesarb@cesarb.net \
--cc=akpm@linux-foundation.org \
--cc=dwalker@fifo99.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rolandd@cisco.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.