Re: [PATCH 1/3] msi vector targeting abstractions

Greg KH
2006-01-11T20:57:49Z

On Wed, Jan 11, 2006 at 02:49:29PM -0600, Mark Maule wrote:
> > > +static inline int msi_arch_init(void)
> > > +{
> > > + extern struct msi_ops msi_apic_ops;
> > > + msi_register(&msi_apic_ops);
> > > + return 0;
> > > +}
> >
> > Don't have an extern in a function, it belongs in a .h file somewhere
> > that describes it and everyone can see it. Otherwise this gets stale
> > and messy over time.
>
> In this case, I have a public .h (asm-xxx/msi.h) which needs a data structure
> decleared down in a driver-private file (drivers/pci/msi-apic.c). Do you have
> a suggestion for where I should put the msi_apic_ops declaration? It should
> be somewhere such that future msi ops (e.g. sn_msi_ops from patch3) would
> be treated consistently.
>
> linux/pci.h seems like one possiblity near where the ops struct is declared,
> but that doesn't really seem right, because we'ld want to treat sn_msi_ops
> (and future msi ops) the same way.
>
> Maybe just move the extern out of the function and up further in the
> asm-xxx/msi.h file?

Sure, or in drivers/pci/pci.h, as that is private to the pci
implementation code, right?

thanks,

greg k-h