Separate the ring pmd from calls within the core eal library so that it will not be loaded unless needed (or compiled in statically)
Note: The demo test application calls directly into the ring pmd driver, and that needs to be cleaned up, so that the -d option is used on the command line to test the proper pmd. for now I've just added linkage to the pmd directly to avoid build breaks and will fix up the application operation in a subsequent patch Signed-off-by: Neil Horman <nhorman at tuxdriver.com> --- app/test/Makefile | 2 ++ lib/librte_eal/common/eal_common_nonpci_devs.c | 10 +--------- lib/librte_pmd_ring/rte_eth_ring.c | 3 +++ mk/rte.app.mk | 4 ---- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/app/test/Makefile b/app/test/Makefile index b49785e..978e331 100644 --- a/app/test/Makefile +++ b/app/test/Makefile @@ -36,6 +36,8 @@ include $(RTE_SDK)/mk/rte.vars.mk # APP = test +LDLIBS += -lrte_ring -lrte_pmd_ring + # # all sources are stored in SRCS-y # diff --git a/lib/librte_eal/common/eal_common_nonpci_devs.c b/lib/librte_eal/common/eal_common_nonpci_devs.c index d925b7f..51497fd 100644 --- a/lib/librte_eal/common/eal_common_nonpci_devs.c +++ b/lib/librte_eal/common/eal_common_nonpci_devs.c @@ -34,12 +34,10 @@ #include <string.h> #include <inttypes.h> +#include <limits.h> #include <string.h> #include <sys/queue.h> #include <rte_string_fns.h> -#ifdef RTE_LIBRTE_PMD_RING -#include <rte_eth_ring.h> -#endif #ifdef RTE_LIBRTE_PMD_XENVIRT #include <rte_eth_xenvirt.h> #endif @@ -56,12 +54,6 @@ struct device_init { #define NUM_DEV_TYPES (sizeof(dev_types)/sizeof(dev_types[0])) struct device_init dev_types[] = { -#ifdef RTE_LIBRTE_PMD_RING - { - .dev_prefix = RTE_ETH_RING_PARAM_NAME, - .init_fn = rte_pmd_ring_init - }, -#endif #ifdef RTE_LIBRTE_PMD_XENVIRT { .dev_prefix = RTE_ETH_XENVIRT_PARAM_NAME, diff --git a/lib/librte_pmd_ring/rte_eth_ring.c b/lib/librte_pmd_ring/rte_eth_ring.c index 24635f3..9fec098 100644 --- a/lib/librte_pmd_ring/rte_eth_ring.c +++ b/lib/librte_pmd_ring/rte_eth_ring.c @@ -37,6 +37,7 @@ #include <rte_malloc.h> #include <rte_memcpy.h> #include <rte_string_fns.h> +#include <rte_pmd.h> struct ring_queue { struct rte_ring *rng; @@ -395,3 +396,5 @@ rte_pmd_ring_init(const char *name, const char *params) } return 0; } + +PMD_INIT_NONPCI(rte_pmd_ring_init, RTE_ETH_RING_PARAM_NAME); diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 072718a..cf8b942 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -133,10 +133,6 @@ ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y) LDLIBS += -lethdev endif -ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y) -LDLIBS += -lrte_pmd_ring -endif - ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y) LDLIBS += -lrte_malloc endif -- 1.8.3.1