On Wed, Sep 02, 2009 at 05:11:12AM -0400, Mike Frysinger wrote: > On Wed, Sep 2, 2009 at 04:57, Marc Andre Tanner wrote: > > On Tue, Sep 01, 2009 at 07:37:27PM -0400, Mike Frysinger wrote: > >> On Tue, Sep 1, 2009 at 18:31, Marc Andre Tanner wrote: > >> > This series adds a configuration option to selectively compile out > >> > printk message strings based on a verbosity level. > >> > > >> > This works by wrapping printk with a macro which evaluates to a > >> > constant if condition which the compiler will be able to optimize > >> > out. > >> > > >> > However because printk might be wrapped by a macro it no longer has > >> > a return value. This means that constructs like the following ones > >> > don't work: > >> > > >> > ((void)(SOME_RANDOM_DEBUG_FLAG && printk(...)); > >> > > >> > some_random_variable = printk(...); > >> > > >> > Therefore printk_unfiltered is introduced which is just an alias > >> > to the standard printk function but not wrapped by a macro. > >> > >> why dont you return 0 if it gets optimized away ? then you wont have > >> to screw with external code at all and things "just work". > > > > This won't work because it would for example also return from functions > > which call printk but aren't checking for the return value (which is > > the common case). > > why would it matter ? > > ({ > int __printk_ret = 0; > if (crazy stuff you're adding) > __printk_ret = printk(.....); > __printk_ret; > }) Yes I missunderstood your "return 0" statement in the first mail. The same effect could also be achieved by: ((crazy stuff) ? printk(...) : 0; Marc -- Marc Andre Tanner >< http://www.brain-dump.org/ >< GPG key: CF7D56C0 -- To unsubscribe from this list: send the line "unsubscribe linux-embedded" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html