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

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to