Hello Shreyansh, On Tue, 12 Jul 2016 11:31:10 +0530 Shreyansh Jain <shreyansh.jain at nxp.com> wrote:
> Introduce a RTE_INIT macro used to mark an init function as a constructor. > Current eal macros have been converted to use this (no functional impact). > DRIVER_REGISTER_PCI is added as a helper for pci drivers. > > Suggested-by: Jan Viktorin <viktorin at rehivetech.com> > Signed-off-by: David Marchand <david.marchand at 6wind.com> > Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com> > --- [...] > +#define RTE_INIT(func) \ > +static void __attribute__((constructor, used)) func(void) > + > #ifdef __cplusplus > } > #endif > diff --git a/lib/librte_eal/common/include/rte_pci.h > b/lib/librte_eal/common/include/rte_pci.h > index fa74962..3027adf 100644 > --- a/lib/librte_eal/common/include/rte_pci.h > +++ b/lib/librte_eal/common/include/rte_pci.h > @@ -470,6 +470,14 @@ void rte_eal_pci_dump(FILE *f); > */ > void rte_eal_pci_register(struct rte_pci_driver *driver); > > +/** Helper for PCI device registeration from driver (eth, crypto) instance */ > +#define DRIVER_REGISTER_PCI(nm, drv) \ > +RTE_INIT(pciinitfn_ ##nm); \ > +static void pciinitfn_ ##nm(void) \ > +{ \ You are missing setting the name here like PMD_REGISTER_DRIVER does now. Or should I include it in my patch set? (drv).name = RTE_STR(nm); > + rte_eal_pci_register(&drv.pci_drv); \ > +} > + > /** > * Unregister a PCI driver. > * > diff --git a/lib/librte_eal/common/include/rte_tailq.h > b/lib/librte_eal/common/include/rte_tailq.h > index 4a686e6..71ed3bb 100644 > --- a/lib/librte_eal/common/include/rte_tailq.h > +++ b/lib/librte_eal/common/include/rte_tailq.h > @@ -148,8 +148,8 @@ struct rte_tailq_head *rte_eal_tailq_lookup(const char > *name); > int rte_eal_tailq_register(struct rte_tailq_elem *t); > > #define EAL_REGISTER_TAILQ(t) \ > -void tailqinitfn_ ##t(void); \ > -void __attribute__((constructor, used)) tailqinitfn_ ##t(void) \ > +RTE_INIT(tailqinitfn_ ##t); \ > +static void tailqinitfn_ ##t(void) \ > { \ > if (rte_eal_tailq_register(&t) < 0) \ > rte_panic("Cannot initialize tailq: %s\n", t.name); \ -- Jan Viktorin E-mail: Viktorin at RehiveTech.com System Architect Web: www.RehiveTech.com RehiveTech Brno, Czech Republic