From: Neil Horman Date: Mon, 21 Apr 2014 14:59:30 +0000 (-0400) Subject: xenvirt: convert to use of PMD_REGISTER_DRIVER and fix linking X-Git-Tag: spdx-start~10813 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=2c62588a533f3ca1dd10acb9521d3c24754d0c4d;p=dpdk.git xenvirt: convert to use of PMD_REGISTER_DRIVER and fix linking 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 Acked-by: Thomas Monjalon --- diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c index da121990e5..adc1415f99 100644 --- a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c +++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -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 dec779f9f0..8758fbf9e9 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)