]> git.droids-corp.org - dpdk.git/commitdiff
drivers: update registration macro usage
authorNeil Horman <nhorman@tuxdriver.com>
Fri, 17 Jun 2016 18:46:21 +0000 (14:46 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 6 Jul 2016 21:21:40 +0000 (23:21 +0200)
Modify the PMD_REGISTER_DRIVER macro, adding a name argument to it.  The
addition of a name argument creates a token that can be used for subsequent
macros in the creation of unique symbol names to export additional bits of
information for use by the pmdinfogen tool.  For example:

PMD_REGISTER_DRIVER(ena_driver, ena);

registers the ena_driver struct as it always did, and creates a symbol
const char this_pmd_name0[] __attribute__((used)) = "ena";

which pmdinfogen can search for and extract.  The subsequent macro

DRIVER_REGISTER_PCI_TABLE(ena, ena_pci_id_map);

creates a symbol const char ena_pci_tbl_export[] __attribute__((used)) =
"ena_pci_id_map";

Which allows pmdinfogen to find the pci table of this driver

Using this pattern, we can export arbitrary bits of information.

pmdinfo uses this information to extract hardware support from an object
file and create a json string to make hardware support info discoverable
later.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
36 files changed:
drivers/Makefile
drivers/crypto/aesni_gcm/aesni_gcm_pmd.c
drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
drivers/crypto/kasumi/rte_kasumi_pmd.c
drivers/crypto/null/null_crypto_pmd.c
drivers/crypto/qat/rte_qat_cryptodev.c
drivers/crypto/snow3g/rte_snow3g_pmd.c
drivers/net/af_packet/rte_eth_af_packet.c
drivers/net/bnx2x/bnx2x_ethdev.c
drivers/net/bnxt/bnxt_ethdev.c
drivers/net/bonding/rte_eth_bond_pmd.c
drivers/net/cxgbe/cxgbe_ethdev.c
drivers/net/e1000/em_ethdev.c
drivers/net/e1000/igb_ethdev.c
drivers/net/ena/ena_ethdev.c
drivers/net/enic/enic_ethdev.c
drivers/net/fm10k/fm10k_ethdev.c
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_ethdev_vf.c
drivers/net/ixgbe/ixgbe_ethdev.c
drivers/net/mlx4/mlx4.c
drivers/net/mlx5/mlx5.c
drivers/net/mpipe/mpipe_tilegx.c
drivers/net/nfp/nfp_net.c
drivers/net/null/rte_eth_null.c
drivers/net/pcap/rte_eth_pcap.c
drivers/net/qede/qede_ethdev.c
drivers/net/ring/rte_eth_ring.c
drivers/net/szedata2/rte_eth_szedata2.c
drivers/net/thunderx/nicvf_ethdev.c
drivers/net/vhost/rte_eth_vhost.c
drivers/net/virtio/virtio_ethdev.c
drivers/net/virtio/virtio_user_ethdev.c
drivers/net/vmxnet3/vmxnet3_ethdev.c
drivers/net/xenvirt/rte_eth_xenvirt.c
lib/librte_eal/common/include/rte_dev.h

index 81c03a8598f529cebb3f4cafa5fd64ca97f40b7f..75a316827ad27ae8ca821050499430903226d177 100644 (file)
@@ -34,4 +34,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 DIRS-y += net
 DIRS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += crypto
 
+DEPDIRS-y += buildtools/pmdinfo
+
 include $(RTE_SDK)/mk/rte.subdir.mk
index 2987ef6b601544edb9535ef8593ee730379b1269..f43e40719154115ae3e552ec8d85e38375ea7501 100644 (file)
@@ -521,4 +521,6 @@ static struct rte_driver aesni_gcm_pmd_drv = {
        .uninit = aesni_gcm_uninit
 };
 
-PMD_REGISTER_DRIVER(aesni_gcm_pmd_drv);
+PMD_REGISTER_DRIVER(aesni_gcm_pmd_drv, aesni_gcm);
+DRIVER_REGISTER_PARAM_STRING(aesni_gcm, "max_nb_queue_pairs=<int> "
+"max_nb_sessions=<int> socket_id=<int>");
index 6554fc4e44697624421a4e1216c922681b527c65..db3e5624ae1b6985fb17d7bc742749d1ca5773fa 100644 (file)
@@ -721,4 +721,6 @@ static struct rte_driver cryptodev_aesni_mb_pmd_drv = {
        .uninit = cryptodev_aesni_mb_uninit
 };
 
-PMD_REGISTER_DRIVER(cryptodev_aesni_mb_pmd_drv);
+PMD_REGISTER_DRIVER(cryptodev_aesni_mb_pmd_drvi, aesni_mb);
+DRIVER_REGISTER_PARAM_STRING(aesni_gcm, "max_nb_queue_pairs=<int> "
+"max_nb_sessions=<int> socket_id=<int>");
index 5f8c7a2e827cfbc5a68dc9c11a109b08a348778a..1d5af4676ed5b03b16bb60f91ebf713484d81215 100644 (file)
@@ -654,4 +654,6 @@ static struct rte_driver cryptodev_kasumi_pmd_drv = {
        .uninit = cryptodev_kasumi_uninit
 };
 
-PMD_REGISTER_DRIVER(cryptodev_kasumi_pmd_drv);
+PMD_REGISTER_DRIVER(cryptodev_kasumi_pmd_drv, kasumi);
+DRIVER_REGISTER_PARAM_STRING(kasumi, "max_nb_queue_pairs=<int> "
+"max_nb_sessions=<int> socket_id=<int>");
index bdaf13ca564152e99c8c1deb1fa726f999bc6520..0a195ed57e406f40f028b3170129012f0fba075c 100644 (file)
@@ -275,4 +275,6 @@ static struct rte_driver cryptodev_null_pmd_drv = {
        .uninit = cryptodev_null_uninit
 };
 
-PMD_REGISTER_DRIVER(cryptodev_null_pmd_drv);
+PMD_REGISTER_DRIVER(cryptodev_null_pmd_drv, cryptodev_null_pmd);
+DRIVER_REGISTER_PARAM_STRING(aesni_gcm, "max_nb_queue_pairs=<int> "
+"max_nb_sessions=<int> socket_id=<int>");
index f46ec857504e57ba7e8a8f1b61b63cad51ee6b15..b35267e66d08ce7cdb3d673f34652463320b195e 100644 (file)
@@ -134,4 +134,6 @@ static struct rte_driver pmd_qat_drv = {
        .init = rte_qat_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(pmd_qat_drv);
+PMD_REGISTER_DRIVER(pmd_qat_drv, qat);
+DRIVER_REGISTER_PCI_TABLE(qat, pci_id_qat_map);
+
index dc8de6bda360eecfb02673886f94e8646d152c73..ddb724c73b447d4e3a63a6da2e031898cfc443d1 100644 (file)
@@ -645,4 +645,6 @@ static struct rte_driver cryptodev_snow3g_pmd_drv = {
        .uninit = cryptodev_snow3g_uninit
 };
 
-PMD_REGISTER_DRIVER(cryptodev_snow3g_pmd_drv);
+PMD_REGISTER_DRIVER(cryptodev_snow3g_pmd_drv, snow3g);
+DRIVER_REGISTER_PARAM_STRING(aesni_gcm, "max_nb_queue_pairs=<int> "
+"max_nb_sessions=<int> socket_id=<int>");
index 2d7f34481b7b7646c6d8ee2059c2b00f6b0fb1a7..1d48e971c37efc4f6220eea53edf27dcac970ebc 100644 (file)
@@ -896,4 +896,6 @@ static struct rte_driver pmd_af_packet_drv = {
        .uninit = rte_pmd_af_packet_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_af_packet_drv);
+PMD_REGISTER_DRIVER(pmd_af_packet_drv, eth_af_packet);
+DRIVER_REGISTER_PARAM_STRING(eth_af_packet, "iface=<string> "
+"qpairs=<int> blocksz=<int> framesz=<int> framecnt=<int>");
index 3ff57c420f472846ae9c9c3fb0e3d37f498fe422..65b99a06d1e341d8ac166f28748a671268cb6708 100644 (file)
@@ -566,5 +566,7 @@ static struct rte_driver rte_bnx2xvf_driver = {
        .init = rte_bnx2xvf_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_bnx2x_driver);
-PMD_REGISTER_DRIVER(rte_bnx2xvf_driver);
+PMD_REGISTER_DRIVER(rte_bnx2x_driver, bnx2x);
+DRIVER_REGISTER_PCI_TABLE(bnx2x, pci_id_bnx2x_map);
+PMD_REGISTER_DRIVER(rte_bnx2xvf_driver, bnx2xvf);
+DRIVER_REGISTER_PCI_TABLE(bnx2xvf, pci_id_bnx2xvf_map);
index 406e38a6b1b6d15678c4216775601ba35a27fd9b..9531abf8f88b64daae0fe255320284b637434210 100644 (file)
@@ -1046,4 +1046,5 @@ static struct rte_driver bnxt_pmd_drv = {
        .init = bnxt_rte_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(bnxt_pmd_drv);
+PMD_REGISTER_DRIVER(bnxt_pmd_drv, bnxt);
+DRIVER_REGISTER_PCI_TABLE(bnxt, bnxt_pci_id_map);
index 9a2518fb441042be7c62f1674115e206e4bf37de..e2890bebb0e181839023e6d40562f781cc78d717 100644 (file)
@@ -2515,4 +2515,9 @@ static struct rte_driver bond_drv = {
        .uninit = bond_uninit,
 };
 
-PMD_REGISTER_DRIVER(bond_drv);
+PMD_REGISTER_DRIVER(bond_drv, bonding);
+
+DRIVER_REGISTER_PARAM_STRING(bonding, "slave=<ifc> primary=<ifc> mode=[0-4] "
+"xmit_policy=[l2 | l23 | l34] socket_id=<int> mac=<mac addr> "
+"lsc_poll_period_ms=<int> up_delay=<int> down_delay=<int>");
+
index 6c130ed2e2c5de0e401865562f0229ae939139e4..7e0e819e282efd4b1e30a3867be9aa086b3752ec 100644 (file)
@@ -1061,4 +1061,6 @@ static struct rte_driver rte_cxgbe_driver = {
        .init = rte_cxgbe_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_cxgbe_driver);
+PMD_REGISTER_DRIVER(rte_cxgbe_driver, cxgb4);
+DRIVER_REGISTER_PCI_TABLE(cxgb4, cxgb4_pci_tbl);
+
index 653be092349758eb242388b03ba4e3467718bd5f..4de5eb2fc67e2773fe4b2ea00d756bb3d9ebcf2a 100644 (file)
@@ -1777,4 +1777,5 @@ struct rte_driver em_pmd_drv = {
        .init = rte_em_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(em_pmd_drv);
+PMD_REGISTER_DRIVER(em_pmd_drv, em);
+DRIVER_REGISTER_PCI_TABLE(em, pci_id_em_map);
index 5067d208a6f4ef5e4e8ccd3037b6553d99f998d3..76d9f5307a73e443c5ccc30fe8093446ef525430 100644 (file)
@@ -5210,5 +5210,7 @@ eth_igb_configure_msix_intr(struct rte_eth_dev *dev)
        E1000_WRITE_FLUSH(hw);
 }
 
-PMD_REGISTER_DRIVER(pmd_igb_drv);
-PMD_REGISTER_DRIVER(pmd_igbvf_drv);
+PMD_REGISTER_DRIVER(pmd_igb_drv, igb);
+DRIVER_REGISTER_PCI_TABLE(igb, pci_id_igb_map);
+PMD_REGISTER_DRIVER(pmd_igbvf_drv, igbvf);
+DRIVER_REGISTER_PCI_TABLE(igbvf, pci_id_igbvf_map);
index e157587b1d9df71437ab7a6734651de830de25b2..702289b80302b5836bb58c6de5db827ed1d9a75c 100644 (file)
@@ -1450,4 +1450,5 @@ struct rte_driver ena_pmd_drv = {
        .init = rte_ena_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(ena_pmd_drv);
+PMD_REGISTER_DRIVER(ena_pmd_drv, ena);
+DRIVER_REGISTER_PCI_TABLE(ena, pci_id_ena_map);
index a7ce064fd9cfe8e7ebc5334d178638718d594053..0929c3f906d519df44beb93f78767b375b62810e 100644 (file)
@@ -636,4 +636,5 @@ static struct rte_driver rte_enic_driver = {
        .init = rte_enic_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_enic_driver);
+PMD_REGISTER_DRIVER(rte_enic_driver, enic);
+DRIVER_REGISTER_PCI_TABLE(enic, pci_id_enic_map);
index eb77705e3b83841634c6026cc9b1c44018d5e10c..66be9c6bef80250bdf9ba014360aaed23d693820 100644 (file)
@@ -3086,4 +3086,5 @@ static struct rte_driver rte_fm10k_driver = {
        .init = rte_pmd_fm10k_init,
 };
 
-PMD_REGISTER_DRIVER(rte_fm10k_driver);
+PMD_REGISTER_DRIVER(rte_fm10k_driver, fm10k);
+DRIVER_REGISTER_PCI_TABLE(fm10k, pci_id_fm10k_map);
index f414d9386ba25d4f3b92b7fadf58ebc5fda3868b..47b9b6b2e3da3a7c0d51852c8c7fc5868e910bfa 100644 (file)
@@ -705,7 +705,8 @@ static struct rte_driver rte_i40e_driver = {
        .init = rte_i40e_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_i40e_driver);
+PMD_REGISTER_DRIVER(rte_i40e_driver, i40e);
+DRIVER_REGISTER_PCI_TABLE(i40e, pci_id_i40e_map);
 
 /*
  * Initialize registers for flexible payload, which should be set by NVM.
index 7b6df1d8467a4065b2758453d3fe8cb57204f1db..1a04c7446e168d577fbc1dc3e93ca7db88a9f343 100644 (file)
@@ -1581,7 +1581,8 @@ static struct rte_driver rte_i40evf_driver = {
        .init = rte_i40evf_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_i40evf_driver);
+PMD_REGISTER_DRIVER(rte_i40evf_driver, i40evf);
+DRIVER_REGISTER_PCI_TABLE(i40evf, pci_id_i40evf_map);
 
 static int
 i40evf_dev_configure(struct rte_eth_dev *dev)
index 0629b426e610aea89c5aa2966aae9eb05c09f8c6..3daa070d0efa9ccf0e4423cb12ca640abf32d813 100644 (file)
@@ -7352,5 +7352,7 @@ static struct rte_driver rte_ixgbevf_driver = {
        .init = rte_ixgbevf_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_ixgbe_driver);
-PMD_REGISTER_DRIVER(rte_ixgbevf_driver);
+PMD_REGISTER_DRIVER(rte_ixgbe_driver, ixgbe);
+DRIVER_REGISTER_PCI_TABLE(ixgbe, pci_id_ixgbe_map);
+PMD_REGISTER_DRIVER(rte_ixgbevf_driver, ixgbevf);
+DRIVER_REGISTER_PCI_TABLE(ixgbevf, pci_id_ixgbevf_map);
index f8ed42b83a151fe8d6c66aa946e26a46e4dd866e..8758eac97c7115c5c1cf6fe762013df46298dc14 100644 (file)
@@ -5861,4 +5861,5 @@ static struct rte_driver rte_mlx4_driver = {
        .init = rte_mlx4_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_mlx4_driver)
+PMD_REGISTER_DRIVER(rte_mlx4_driveri, mlx4)
+DRIVER_REGISTER_PCI_TABLE(mlx4, mlx4_pci_id_map);
index 5aa4adc6960cf920813d9dbbd0d0870613823ee0..358e9b49c1fb82e1a4ea5ac8b64e1d231ccdc2fe 100644 (file)
@@ -762,4 +762,5 @@ static struct rte_driver rte_mlx5_driver = {
        .init = rte_mlx5_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_mlx5_driver)
+PMD_REGISTER_DRIVER(rte_mlx5_driveri, mlx5)
+DRIVER_REGISTER_PCI_TABLE(mlx5, mlx5_pci_id_map);
index 26e14248ca1ed8fca682fc1532454a6c84593795..4a2a9052a84e2f493c5847f9900d3ed3b1e388cd 100644 (file)
@@ -1635,8 +1635,8 @@ static struct rte_driver pmd_mpipe_gbe_drv = {
        .init = rte_pmd_mpipe_devinit,
 };
 
-PMD_REGISTER_DRIVER(pmd_mpipe_xgbe_drv);
-PMD_REGISTER_DRIVER(pmd_mpipe_gbe_drv);
+PMD_REGISTER_DRIVER(pmd_mpipe_xgbe_drv, mpipe_xgbe);
+PMD_REGISTER_DRIVER(pmd_mpipe_gbe_drv, mpipe_gbe);
 
 static void __attribute__((constructor, used))
 mpipe_init_contexts(void)
index 6afd49b13bfb24b723d8ba25fd7720b7382bbc54..82e3e4e19ff8d78807ea613875af02be7b10462f 100644 (file)
@@ -2486,7 +2486,8 @@ static struct rte_driver rte_nfp_net_driver = {
        .init = nfp_net_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_nfp_net_driver);
+PMD_REGISTER_DRIVER(rte_nfp_net_driver, nfp);
+DRIVER_REGISTER_PCI_TABLE(nfp, pci_id_nfp_net_map);
 
 /*
  * Local variables:
index ab440f3b1decbace9206ee8fb1020739c109300b..ae0ff777e613b309640f9801bbc3ca9f2c358ada 100644 (file)
@@ -693,4 +693,5 @@ static struct rte_driver pmd_null_drv = {
        .uninit = rte_pmd_null_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_null_drv);
+PMD_REGISTER_DRIVER(pmd_null_drv, eth_null);
+DRIVER_REGISTER_PARAM_STRING(eth_null, "size=<int> copy=<int>");
index c86f17b64da02dfa7dd444073eada04e3cb55923..b341f93a389839e27ffc2a2ef1f1f60e3627c036 100644 (file)
@@ -1090,4 +1090,6 @@ static struct rte_driver pmd_pcap_drv = {
        .uninit = rte_pmd_pcap_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_pcap_drv);
+PMD_REGISTER_DRIVER(pmd_pcap_drv, pcap);
+DRIVER_REGISTER_PARAM_STRING(pcap, "rx_pcap=<string> tx_pcap=<string> "
+"rx_iface=<ifc> tx_iface=<ifc> iface=<ifc>");
index bb531be5a9c65ec4b06270c8b4c7461d807c8160..837f410442cdf9b35f54d99d13e3a6d494f3cc5d 100644 (file)
@@ -1340,5 +1340,7 @@ static struct rte_driver rte_qede_driver = {
        .init = rte_qedevf_pmd_init
 };
 
-PMD_REGISTER_DRIVER(rte_qede_driver);
-PMD_REGISTER_DRIVER(rte_qedevf_driver);
+PMD_REGISTER_DRIVER(rte_qede_driver, qede);
+DRIVER_REGISTER_PCI_TABLE(qede, pci_id_qede_map);
+PMD_REGISTER_DRIVER(rte_qedevf_driver, qedevf);
+DRIVER_REGISTER_PCI_TABLE(qedevf, pci_id_qedevf_map);
index b1783c3e3a69c669e19a9a3ebbad8f7aa8facaa9..f2f5217144fb583a9e0c0ccb621a0be735a1a88f 100644 (file)
@@ -630,4 +630,5 @@ static struct rte_driver pmd_ring_drv = {
        .uninit = rte_pmd_ring_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_ring_drv);
+PMD_REGISTER_DRIVER(pmd_ring_drv, eth_ring);
+DRIVER_REGISTER_PARAM_STRING(eth_ring, "nodeaction=[attach|detach]");
index 985a8d601400e7969a062d7f47ca43401edc122d..e71bce51bc8fce75ac88d748a6bae2bd9eea3a1a 100644 (file)
@@ -1601,4 +1601,5 @@ static struct rte_driver rte_szedata2_driver = {
        .uninit = rte_szedata2_uninit,
 };
 
-PMD_REGISTER_DRIVER(rte_szedata2_driver);
+PMD_REGISTER_DRIVER(rte_szedata2_driver, rte_szedata2_pmd);
+DRIVER_REGISTER_PCI_TABLE(rte_szedata2_pmd, rte_szedata2_pci_id_table);
index 48ed3812fe6f04b8183b492aaf53c18744483f3d..03bf458ad931097e3d71c5ffc130374bd5efad43 100644 (file)
@@ -1788,4 +1788,5 @@ static struct rte_driver rte_nicvf_driver = {
        .init = rte_nicvf_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_nicvf_driver);
+PMD_REGISTER_DRIVER(rte_nicvf_driver, thunderx_nicvf);
+DRIVER_REGISTER_PCI_TABLE(thunderx_nicvf, pci_id_nicvf_map);
index 3b5094653fd35067ea742981c6e8670fa2e026e6..a02dd552d839938a2923ad69097d2c38ec4c5a5f 100644 (file)
@@ -921,4 +921,5 @@ static struct rte_driver pmd_vhost_drv = {
        .uninit = rte_pmd_vhost_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_vhost_drv);
+PMD_REGISTER_DRIVER(pmd_vhost_drv, eth_vhost);
+DRIVER_REGISTER_PARAM_STRING(eth_vhost, "iface=<ifc> queues=<int>");
index 480daa37b64c709710afb83b0336061c231fb5bb..e6c2ac21108b2b03eede2c4f7910d4e777b94b0b 100644 (file)
@@ -1571,4 +1571,5 @@ static struct rte_driver rte_virtio_driver = {
        .init = rte_virtio_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_virtio_driver);
+PMD_REGISTER_DRIVER(rte_virtio_driver, virtio_net);
+DRIVER_REGISTER_PCI_TABLE(virtio_net, pci_id_virtio_map);
index 5ab24711959ccf7d8fc1001d78b8fc783624a67b..2ed43803d53f017e6ca68a868388b3acaf69af88 100644 (file)
@@ -437,4 +437,4 @@ static struct rte_driver virtio_user_driver = {
        .uninit = virtio_user_pmd_devuninit,
 };
 
-PMD_REGISTER_DRIVER(virtio_user_driver);
+PMD_REGISTER_DRIVER(virtio_user_driver, virtio_user);
index 29b469cc9c2771f74ae6625e9de234357ec6cdb5..8da4449895104ed57c9d7a3c17c7df42c0cadb50 100644 (file)
@@ -954,4 +954,5 @@ static struct rte_driver rte_vmxnet3_driver = {
        .init = rte_vmxnet3_pmd_init,
 };
 
-PMD_REGISTER_DRIVER(rte_vmxnet3_driver);
+PMD_REGISTER_DRIVER(rte_vmxnet3_driver, vmxnet3);
+DRIVER_REGISTER_PCI_TABLE(vmxnet3, pci_id_vmxnet3_map);
index 3e45808f8cd55849b87822f020ea97d5562a3179..47e329990ae652adcf0c02005e7c9efea0cc776c 100644 (file)
@@ -766,4 +766,4 @@ static struct rte_driver pmd_xenvirt_drv = {
        .uninit = rte_pmd_xenvirt_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_xenvirt_drv);
+PMD_REGISTER_DRIVER(pmd_xenvirt_drv, xenvirt);
index f1b550794057df743d6bdec7bcc7f81590d3409d..e6f0d4c34f08ec9f896e4f7fd48a4d02dabbbaba 100644 (file)
@@ -48,7 +48,7 @@ extern "C" {
 
 #include <stdio.h>
 #include <sys/queue.h>
-
+#include <rte_pci.h>
 #include <rte_log.h>
 
 __attribute__((format(printf, 2, 0)))
@@ -178,12 +178,30 @@ int rte_eal_vdev_init(const char *name, const char *args);
  */
 int rte_eal_vdev_uninit(const char *name);
 
-#define PMD_REGISTER_DRIVER(d)\
-void devinitfn_ ##d(void);\
-void __attribute__((constructor, used)) devinitfn_ ##d(void)\
+#define DRIVER_EXPORT_NAME_ARRAY(n, idx) n##idx[]
+
+#define DRIVER_EXPORT_NAME(name, idx) \
+static const char DRIVER_EXPORT_NAME_ARRAY(this_pmd_name, idx) \
+__attribute__((used)) = RTE_STR(name)
+
+#define PMD_REGISTER_DRIVER(drv, nm)\
+void devinitfn_ ##drv(void);\
+void __attribute__((constructor, used)) devinitfn_ ##drv(void)\
 {\
-       rte_eal_driver_register(&d);\
-}
+       (drv).name = RTE_STR(nm);\
+       rte_eal_driver_register(&drv);\
+} \
+DRIVER_EXPORT_NAME(nm, __COUNTER__)
+
+#define DRV_EXP_TAG(name, tag) __##name##_##tag
+
+#define DRIVER_REGISTER_PCI_TABLE(name, table) \
+static const char DRV_EXP_TAG(name, pci_tbl_export)[] __attribute__((used)) = \
+RTE_STR(table)
+
+#define DRIVER_REGISTER_PARAM_STRING(name, str) \
+static const char DRV_EXP_TAG(name, param_string_export)[] \
+__attribute__((used)) = str
 
 #ifdef __cplusplus
 }