-----Original Message----- From: coreboot-bounces+mylesgw=gmail.com@coreboot.org [mailto:coreboot- bounces+mylesgw=gmail.com@coreboot.org] On Behalf Of Patrick Georgi Sent: Monday, April 27, 2009 11:49 AM To: coreboot@coreboot.org Subject: [coreboot] [PATCH]More consistent behaviour for printk_*
Hi,
the attached patch make printk_* behaviour more consistent. Without it, side effects in the arguments (eg. a pci config read, or variable increment) "vanish" with the message, and the behaviour changes.
Example: printk_info("foo %d\n", i++);
Without this patch, this becomes (for suitable loglevels) do {} while (0)
With this patch, this will be: do_printk(EMERG, "", i++);
Some of these effects might be unwanted, but at least they are consistent now. For example, via c7 CAR failed for loglevel > 7 for various reasons (patch upcoming). While it fails all the time now (this patch is no "magic fix"), upcoming development is less likely to produce such "hidden surprises".
To reduce the memory footprint slightly, the formatted strings are discarded. A simpler patch would be to just kill the whole "#if #undef #define #endif"-
I like simple.
section, but then a lot of strings that never surface would be compiled in (and I doubt the compiler is clever enough to figure that out)
We discussed this recently for v3. Do you have a good idea of how much space this actually saves?
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
Acked-by: Myles Watson mylesgw@gmail.com
Thanks, Myles