From 477d9500a348b903cce86da00aaaf0b0461af060 Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Sat, 22 Aug 2020 08:26:47 +0200 Subject: [PATCH] env: fix pci driver registration Registration macro now generates function based on driver's name. It allows to have multiple registration within single source file. Similar pattern is used e.g. by SPDK_NVMF_TRANSPORT_REGISTER. Signed-off-by: Jacek Kalwas Change-Id: Ied0887e8dae7fe9ca1517313be5eff8f218b7e98 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3895 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- include/spdk/env.h | 10 +++++----- lib/env_dpdk/pci_idxd.c | 2 +- lib/env_dpdk/pci_ioat.c | 2 +- lib/env_dpdk/pci_virtio.c | 2 +- lib/env_dpdk/pci_vmd.c | 2 +- lib/nvme/nvme_pcie.c | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/spdk/env.h b/include/spdk/env.h index 3e2018ac8..0a72627ea 100644 --- a/include/spdk/env.h +++ b/include/spdk/env.h @@ -699,17 +699,17 @@ struct spdk_pci_device { typedef int (*spdk_pci_enum_cb)(void *enum_ctx, struct spdk_pci_device *pci_dev); -#define SPDK_PCI_DEVICE(vend, dev) \ +#define SPDK_PCI_DEVICE(vend, dev) \ .class_id = SPDK_PCI_CLASS_ANY_ID, \ .vendor_id = (vend), \ .device_id = (dev), \ .subvendor_id = SPDK_PCI_ANY_ID, \ .subdevice_id = SPDK_PCI_ANY_ID -#define SPDK_PCI_DRIVER_REGISTER(name, id_table, flags) \ -__attribute__((constructor)) static void pci_drv ## _register(void) \ -{ \ - spdk_pci_driver_register(name, id_table, flags); \ +#define SPDK_PCI_DRIVER_REGISTER(name, id_table, flags) \ +__attribute__((constructor)) static void _spdk_pci_driver_register_##name(void) \ +{ \ + spdk_pci_driver_register(#name, id_table, flags); \ } /** diff --git a/lib/env_dpdk/pci_idxd.c b/lib/env_dpdk/pci_idxd.c index eddbfa4af..a6e4427af 100644 --- a/lib/env_dpdk/pci_idxd.c +++ b/lib/env_dpdk/pci_idxd.c @@ -47,4 +47,4 @@ spdk_pci_idxd_get_driver(void) return spdk_pci_get_driver("idxd"); } -SPDK_PCI_DRIVER_REGISTER("idxd", idxd_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING); +SPDK_PCI_DRIVER_REGISTER(idxd, idxd_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING); diff --git a/lib/env_dpdk/pci_ioat.c b/lib/env_dpdk/pci_ioat.c index 28b7bdb44..1b6788a6f 100644 --- a/lib/env_dpdk/pci_ioat.c +++ b/lib/env_dpdk/pci_ioat.c @@ -95,4 +95,4 @@ spdk_pci_ioat_get_driver(void) return spdk_pci_get_driver("ioat"); } -SPDK_PCI_DRIVER_REGISTER("ioat", ioat_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING); +SPDK_PCI_DRIVER_REGISTER(ioat, ioat_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING); diff --git a/lib/env_dpdk/pci_virtio.c b/lib/env_dpdk/pci_virtio.c index e525a4a8e..c30beaeb5 100644 --- a/lib/env_dpdk/pci_virtio.c +++ b/lib/env_dpdk/pci_virtio.c @@ -49,5 +49,5 @@ spdk_pci_virtio_get_driver(void) return spdk_pci_get_driver("virtio"); } -SPDK_PCI_DRIVER_REGISTER("virtio", virtio_pci_driver_id, +SPDK_PCI_DRIVER_REGISTER(virtio, virtio_pci_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING | SPDK_PCI_DRIVER_WC_ACTIVATE); diff --git a/lib/env_dpdk/pci_vmd.c b/lib/env_dpdk/pci_vmd.c index fb6860873..19289e051 100644 --- a/lib/env_dpdk/pci_vmd.c +++ b/lib/env_dpdk/pci_vmd.c @@ -46,5 +46,5 @@ spdk_pci_vmd_get_driver(void) return spdk_pci_get_driver("vmd"); } -SPDK_PCI_DRIVER_REGISTER("vmd", vmd_pci_driver_id, +SPDK_PCI_DRIVER_REGISTER(vmd, vmd_pci_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING | SPDK_PCI_DRIVER_WC_ACTIVATE); diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 4c8fb2509..846dd6cad 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -2555,7 +2555,7 @@ static struct spdk_pci_id nvme_pci_driver_id[] = { { .vendor_id = 0, /* sentinel */ }, }; -SPDK_PCI_DRIVER_REGISTER("nvme", nvme_pci_driver_id, +SPDK_PCI_DRIVER_REGISTER(nvme, nvme_pci_driver_id, SPDK_PCI_DRIVER_NEED_MAPPING | SPDK_PCI_DRIVER_WC_ACTIVATE); const struct spdk_nvme_transport_ops pcie_ops = {