[U-Boot] [PATCH V3 05/13] i2c: Create common default i2c_set_bus_num() function

Mike Frysinger vapier at gentoo.org
Mon Oct 10 19:51:30 CEST 2011


On Monday 10 October 2011 11:31:39 Stefano Babic wrote:
> On 10/10/2011 05:19 PM, Mike Frysinger wrote:
> > On Monday 10 October 2011 06:50:12 Stefano Babic wrote:
> >> +int __def_i2c_set_bus_num(unsigned int bus)
> >> +{
> >> +	return 0;
> >> +}
> >> +int i2c_set_bus_num(unsigned int)
> >> +	__attribute__((weak, alias("__def_i2c_set_bus_num")));
> > 
> > any reason this can't just be:
> > __weak int i2c_set_bus_num(unsigned int bus)
> > {
> > 
> > 	return 0;
> > 
> > }
> > 
> > i can understand having a default func when it actually does something,
> > but i don't see much value in a stub that returns 0
> 
> It seems to me that this is the commonly used style in u-boot. The same
> happens for the i2c_init_board, some lines before, and in a lot of other
> modules:
> 
> void __def_i2c_init_board(void)
> {
>         return;
> }
> void i2c_init_board(void)
>         __attribute__((weak, alias("__def_i2c_init_board")));
> 
> Simply grepping in u-boot code, the default function is defined even if
> it does nothing,

i believe we have two standards.  i'm not sure which gets used more, or if 
it's just a wash.  i think it makes sense to have an accessible default func 
if it does something useful, but not if it's just a stub.

in the __def/weak style above, unless people use --gc-sections when linking (i 
think we've got many people doing this now, but not all), you end up with dead 
code in the binary.  in the code i proposed, the func gets discarded both when 
using --gc-sections and when not.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20111010/836d1287/attachment.pgp 


More information about the U-Boot mailing list