[dpdk-dev] [PATCH 0/X v5 05/14] xenvirt: Convert to use of PMD_REGISTER_DRIVER and fix linking
Neil Horman
nhorman at tuxdriver.com
Mon Apr 21 16:59:30 CEST 2014
convert the xenvirt driver to use the PMD_REGISTER_DRIVER macro.
This means that the test applications now have no reference to the xenvirt library
when building DSO's and must specify its use on the command line with the -d
option. Static linking will still initalize the driver automatically.
A few notes:
xenvirt was unbuildable as of commit 4c39baf297d10c217e7d3e7370f26a1fede58308..
That commit neglected to include the rte_vdev.h header, so several structs were
left undefined. This patch includes a fix for that as well.
Also, The linkage for xenvirt is broken in much the same way pmd_ring was, in
that the xenvirt pmd has a function that is called directly from applications
(the example being the testpmd application). The function is
rte_mempool_gntalloc_create, and should clearly be moved into the rte_mempool
library, with the supporting code in the function implementation moved to a new
xenvirt library separate from the pmd. This is a large undertaking that
detracts from the purpose of this series however, and so for now, I'm leaving
the linkage to the application in place, and will address this issue in a later
series
Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
---
lib/librte_pmd_xenvirt/rte_eth_xenvirt.c | 8 ++------
mk/rte.app.mk | 7 +++----
2 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c
index 533aa76..ecafe7a 100644
--- a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c
+++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c
@@ -53,6 +53,7 @@
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
+#include <rte_vdev.h>
#include <cmdline_parse.h>
#include <cmdline_parse_etheraddr.h>
@@ -710,9 +711,4 @@ static struct rte_vdev_driver pmd_xenvirt_drv = {
.init = rte_pmd_xenvirt_devinit,
};
-__attribute__((constructor))
-static void
-rte_pmd_xenvirt_init(void)
-{
- rte_eal_vdev_driver_register(&pmd_xenvirt_drv);
-}
+PMD_REGISTER_DRIVER(pmd_xenvirt_drv, PMD_VDEV);
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 16edbce..aabe75e 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -158,16 +158,15 @@ ifeq ($(CONFIG_RTE_LIBRTE_EAL),y)
LDLIBS += -lrte_eal
endif
+ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y)
+LDLIBS += -lrte_cmdline
+endif
ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y)
LDLIBS += -lrte_pmd_xenvirt
LDLIBS += -lxenstore
endif
-ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y)
-LDLIBS += -lrte_cmdline
-endif
-
ifeq ($(RTE_BUILD_SHARED_LIB),n)
ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
--
1.8.3.1
More information about the dev
mailing list