On Fri, Feb 08, 2008 at 03:03:56PM +0100, Nico Erfurth wrote: >Bernhard Fischer schrieb: > >>> dev = xopen(device, O_RDONLY|O_NONBLOCK); >> >> device_open() > >Taken from the original eject.c code, but I can change that, I. > >>> +#if ENABLE_FEATURE_EJECT_SCSI >>> + if (flags & FLAG_SCSI) >>> + eject_scsi(dev); >>> + else >>> +#endif >>> + eject_cdrom(dev, flags, device); >> >> Is it smaller if you use a functor here? >> void (*do_eject_fn)(const int fd, const unsigned long flags, >> const char *dev); >> do_eject_fn = eject_cdrom; >> if (ENABLE_FEATURE_EJECT_SCSI && flags & FLAG_SCSI) >> do_eject_fn = eject_scsi; >> /* Just Do It (tm) */ >> do_eject_fn(fd, flags, dev); >>> if (ENABLE_FEATURE_CLEAN_UP) >>> close(dev); > >My gcc inlines both functions, so most probably the functor version >would be bigger. > >> What's the size(1) with and without scsi support? > >The size didn't change compared to the original version, when >SCSI-Support is disabled. > >Output of bloatcheck with SCSI enabled is: >make bloatcheck >... > >function old new delta >eject_main 135 369 +234 >.rodata 941 1014 +73 >static.C - 18 +18 >------------------------------------------------------------------------------ >(add/remove: 1/0 grow/shrink: 2/0 up/down: 325/0) Total: 325
I don't know, but 325 bytes sounds a bit much for what it really does. Can you try out if my suggestions help the size? (I'd say 200 bytes is the upper limit for such functionality :) _______________________________________________ busybox mailing list [email protected] http://busybox.net/cgi-bin/mailman/listinfo/busybox
