Re: [PATCH] 2.5.5-pre1 IDE cleanup 9

Martin Dalecki
2002-02-22T15:13:38Z

Jeff Garzik wrote:

>>#ifdef CONFIG_BLK_DEV_ALI15X3
>>extern unsigned int pci_init_ali15x3(struct pci_dev *, const char *);
>>...
>>#define PCI_ALI15X3 &pci_init_ali15x3
>>#else
>>...
>>#define PCI_ALI15X3 NULL
>>#endif
>>
>>This should rather look like:
>>
>>#ifdef CONFIG_BLK_DEV_ALI15X3
>>extern unsigned int pci_init_ali15x3(struct pci_dev *);
>>#else
>>#define pci_init_ali15x3 NULL
>>#endif
>>
>
> For what the code is trying to accomplish, the code is correct.

Of course it's semantically correct. But the usage of an explicitly
taken function pointer refference is usually a shure sign for a C
beginner at work. I know and you know that this &xxx == xxx semantics is
a workarount for pure K&R C implementation quriks.

> I agree the above change is also correct... probably the author wanted
> to reduce the size of the -huge- data table where PCI_ALI15X3 symbol is
> used.

Yes but he just didn't recognize that the whole huge list is the true
cause of grief ;-).

>>And be replaces entierly by register_chipset(...) blah blah or
>>therlike ;-) as well as module initialization lists.
>>
>
> When we have "modprobe piix4_ide" loading the IDE subsystem, you are
> correct.

That's the intention yes.

> IDE is currently driven by an inward->outward setup of module
> initialization, which is fundamentally the opposite of what we want,
> which is chipset_drvr -> core initialization.

Just one word: Amen.