[PATCH 8/8] staging: comedi: amplc_pc236: Add attach_pci() hook

Ian Abbott abbotti at mev.co.uk
Wed May 30 12:22:12 UTC 2012


On 2012-05-30 12:51, Ian Abbott wrote:
> On 2012-05-29 15:45, Dan Carpenter wrote:
>> On Tue, May 29, 2012 at 02:49:35PM +0100, Ian Abbott wrote:
>>> Implement the attach_pci() hook as function pc236_attach_pci().  This is
>>> called bu comedi_pci_auto_config() in preference to the old attach()
>>> hook (implemented by pc236_attach()) and avoids searching for the probed
>>> PCI device.
>>>
>>> Factor out code common to pc236_find_pci() and pc236_attach_pci() into
>>> new function pc236_find_pci_board().  Factor out most code common to
>>> pc236_attach() and pc236_attach_pci() into new functions
>>> pc236_pci_common_attach() and pc236_common_attach().
>>>
>>> Also #if out member 'devid' from struct pc236_board unless PCI boards
>>> are supported as it is not used for ISA boards.
>>>
>>
>> I can't tell you how much I hate these ifdefs.  :(  They're every
>> where...  Who is it that cares about cares so much about 3 extra
>> unsigned shorts?
>>
>> The rules are that #ifdefs are only ok in .h files and not in .c
>> files.  We should be removing them and not adding them if we want
>> to move this code out of staging.
>
> As an experiment, with the following patch (sorry for the line-wrapping
> which prevents it being applied) and with CONFIG_COMEDI_AMPLC_PC236_ISA
> defined and CONFIG_COMEDI_AMPLC_PC236_PCI not defined, the size of the
> amplc_pc236.ko increased in size from 5785 bytes to 6215 bytes and there
> was a compiler warning about pc236_attach_pci being defined but not used
> (this is what the .attach_pci hook in struct comedi_driver
> amplc_pc236_driver would get set to, but that is still conditionally
> compiled out).  If I set the .attach_pci hook to pc236_attach_pci
> regardless, it gets rid of the warning, but the size of the
> amplc_pc236.ko file increased to 6776 bytes as more code is reachable in
> theory although not in practice as the PCI probe code that calls this
> function indirectly is still conditionally compiled out.

I can bring the size of the amplc_pc236.ko back down to 5848 bytes or so 
if I give the compiler a bit of a helping hand at removing unreachable 
code by adding some if (IS_ENABLED(...)) type tests near the start of 
the unreachable functions.  Those are about as ugly as the #if lines 
though.  My compiler seems to remove unreachable code within a function 
and will remove static functions that are not referenced by any 
reachable or unreachable code (issuing a warning in this case), but does 
not seem to remove static functions that are only referenced by 
unreachable code.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti at mev.co.uk>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-



More information about the devel mailing list