[dpdk-dev] [PATCH 05/19] ring: convert the ring pmd driver to use the PMD_INIT_NONPCI macro

Neil Horman nhorman at tuxdriver.com
Thu Apr 10 22:49:55 CEST 2014


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



More information about the dev mailing list