From f1f6ebc0eaf68a825c6175f5e6a436f7d91660c3 Mon Sep 17 00:00:00 2001 From: William Tu Date: Tue, 24 Aug 2021 16:21:03 +0000 Subject: [PATCH] eal: remove sys/queue.h from public headers Currently there are some public headers that include 'sys/queue.h', which is not POSIX, but usually provided by the Linux/BSD system library. (Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008. Present on the BSDs.) The file is missing on Windows. During the Windows build, DPDK uses a bundled copy, so building a DPDK library works fine. But when OVS or other applications use DPDK as a library, because some DPDK public headers include 'sys/queue.h', on Windows, it triggers an error due to no such file. One solution is to install the 'lib/eal/windows/include/sys/queue.h' into Windows environment, such as [1]. However, this means DPDK exports the functionalities of 'sys/queue.h' into the environment, which might cause symbols, macros, headers clashing with other applications. The patch fixes it by removing the "#include " from DPDK public headers, so programs including DPDK headers don't depend on the system to provide 'sys/queue.h'. When these public headers use macros such as TAILQ_xxx, we replace it by the ones with RTE_ prefix. For Windows, we copy the definitions from to rte_os.h in Windows EAL. Note that these RTE_ macros are compatible with , both at the level of API (to use with macros in C files) and ABI (to avoid breaking it). Additionally, the TAILQ_FOREACH_SAFE is not part of , the patch replaces it with RTE_TAILQ_FOREACH_SAFE. [1] http://mails.dpdk.org/archives/dev/2021-August/216304.html Suggested-by: Nick Connolly Suggested-by: Dmitry Kozlyuk Signed-off-by: William Tu Acked-by: Dmitry Kozlyuk Acked-by: Narcisa Vasile --- drivers/bus/auxiliary/private.h | 1 + drivers/bus/auxiliary/rte_bus_auxiliary.h | 5 ++-- drivers/bus/dpaa/dpaa_bus.c | 4 ++-- drivers/bus/fslmc/fslmc_bus.c | 4 ++-- drivers/bus/fslmc/fslmc_vfio.c | 9 +++++--- drivers/bus/ifpga/rte_bus_ifpga.h | 8 +++---- drivers/bus/pci/pci_params.c | 2 ++ drivers/bus/pci/rte_bus_pci.h | 13 +++++------ drivers/bus/pci/windows/pci.c | 3 +++ drivers/bus/pci/windows/pci_netuio.c | 2 ++ drivers/bus/vdev/rte_bus_vdev.h | 7 +++--- drivers/bus/vdev/vdev.c | 3 ++- drivers/bus/vmbus/rte_bus_vmbus.h | 13 +++++------ drivers/net/bnxt/tf_ulp/bnxt_ulp.c | 2 +- drivers/net/bonding/rte_eth_bond_flow.c | 2 +- drivers/net/failsafe/failsafe_flow.c | 2 +- drivers/net/i40e/i40e_ethdev.c | 9 ++++---- drivers/net/i40e/i40e_ethdev.h | 1 + drivers/net/i40e/i40e_flow.c | 6 ++--- drivers/net/i40e/i40e_hash.c | 2 +- drivers/net/i40e/rte_pmd_i40e.c | 6 ++--- drivers/net/iavf/iavf.h | 2 ++ drivers/net/iavf/iavf_generic_flow.c | 14 +++++------ drivers/net/ice/ice_dcf_ethdev.c | 1 + drivers/net/ice/ice_ethdev.c | 4 ++-- drivers/net/ice/ice_generic_flow.c | 14 +++++------ drivers/net/ipn3ke/ipn3ke_flow.c | 2 +- drivers/net/mlx5/mlx5_flow_dv.c | 2 +- drivers/net/mlx5/mlx5_flow_meter.c | 2 +- drivers/net/softnic/rte_eth_softnic_flow.c | 3 ++- drivers/net/softnic/rte_eth_softnic_swq.c | 2 +- drivers/raw/dpaa2_qdma/dpaa2_qdma.c | 2 +- lib/bbdev/rte_bbdev.h | 2 +- lib/cryptodev/cryptodev_pmd.h | 2 +- lib/cryptodev/rte_cryptodev.h | 2 +- lib/eal/common/eal_common_devargs.c | 4 ++-- lib/eal/common/eal_common_log.c | 1 + lib/eal/common/eal_common_options.c | 2 +- lib/eal/common/eal_private.h | 1 + lib/eal/freebsd/include/rte_os.h | 10 ++++++++ lib/eal/include/rte_bus.h | 5 ++-- lib/eal/include/rte_class.h | 6 ++--- lib/eal/include/rte_dev.h | 5 ++-- lib/eal/include/rte_devargs.h | 3 +-- lib/eal/include/rte_log.h | 1 - lib/eal/include/rte_service.h | 1 - lib/eal/include/rte_tailq.h | 15 +++++------- lib/eal/linux/include/rte_os.h | 10 ++++++++ lib/eal/windows/eal_alarm.c | 1 + lib/eal/windows/include/rte_os.h | 27 ++++++++++++++++++++++ lib/efd/rte_efd.c | 2 +- lib/ethdev/rte_ethdev_core.h | 2 +- lib/hash/rte_fbk_hash.h | 1 - lib/hash/rte_thash.c | 2 ++ lib/ip_frag/rte_ip_frag.h | 4 ++-- lib/mempool/rte_mempool.c | 2 +- lib/mempool/rte_mempool.h | 9 ++++---- lib/pci/rte_pci.h | 1 - lib/ring/rte_ring_core.h | 1 - lib/table/rte_swx_table.h | 7 +++--- lib/table/rte_swx_table_selector.h | 5 ++-- lib/vhost/iotlb.c | 11 +++++---- lib/vhost/rte_vdpa_dev.h | 2 +- lib/vhost/vdpa.c | 2 +- 64 files changed, 177 insertions(+), 124 deletions(-) diff --git a/drivers/bus/auxiliary/private.h b/drivers/bus/auxiliary/private.h index 9987e8b501..d22e83cf7a 100644 --- a/drivers/bus/auxiliary/private.h +++ b/drivers/bus/auxiliary/private.h @@ -7,6 +7,7 @@ #include #include +#include #include "rte_bus_auxiliary.h" diff --git a/drivers/bus/auxiliary/rte_bus_auxiliary.h b/drivers/bus/auxiliary/rte_bus_auxiliary.h index 2462bad2ba..b1f5610404 100644 --- a/drivers/bus/auxiliary/rte_bus_auxiliary.h +++ b/drivers/bus/auxiliary/rte_bus_auxiliary.h @@ -19,7 +19,6 @@ extern "C" { #include #include #include -#include #include #include @@ -113,7 +112,7 @@ typedef int (rte_auxiliary_dma_unmap_t)(struct rte_auxiliary_device *dev, * A structure describing an auxiliary device. */ struct rte_auxiliary_device { - TAILQ_ENTRY(rte_auxiliary_device) next; /**< Next probed device. */ + RTE_TAILQ_ENTRY(rte_auxiliary_device) next; /**< Next probed device. */ struct rte_device device; /**< Inherit core device */ char name[RTE_DEV_NAME_MAX_LEN + 1]; /**< ASCII device name */ struct rte_intr_handle intr_handle; /**< Interrupt handle */ @@ -124,7 +123,7 @@ struct rte_auxiliary_device { * A structure describing an auxiliary driver. */ struct rte_auxiliary_driver { - TAILQ_ENTRY(rte_auxiliary_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(rte_auxiliary_driver) next; /**< Next in list. */ struct rte_driver driver; /**< Inherit core driver. */ struct rte_auxiliary_bus *bus; /**< Auxiliary bus reference. */ rte_auxiliary_match_t *match; /**< Device match function. */ diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index e499305d85..6cab2ae760 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -105,7 +105,7 @@ dpaa_add_to_device_list(struct rte_dpaa_device *newdev) struct rte_dpaa_device *dev = NULL; struct rte_dpaa_device *tdev = NULL; - TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tdev) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tdev) { comp = compare_dpaa_devices(newdev, dev); if (comp < 0) { TAILQ_INSERT_BEFORE(dev, newdev, next); @@ -245,7 +245,7 @@ dpaa_clean_device_list(void) struct rte_dpaa_device *dev = NULL; struct rte_dpaa_device *tdev = NULL; - TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tdev) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tdev) { TAILQ_REMOVE(&rte_dpaa_bus.device_list, dev, next); free(dev); dev = NULL; diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c index becc455f6b..8c8f8a298d 100644 --- a/drivers/bus/fslmc/fslmc_bus.c +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -45,7 +45,7 @@ cleanup_fslmc_device_list(void) struct rte_dpaa2_device *dev; struct rte_dpaa2_device *t_dev; - TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, t_dev) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, t_dev) { TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev, next); free(dev); dev = NULL; @@ -82,7 +82,7 @@ insert_in_device_list(struct rte_dpaa2_device *newdev) struct rte_dpaa2_device *dev = NULL; struct rte_dpaa2_device *tdev = NULL; - TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, tdev) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, tdev) { comp = compare_dpaa2_devname(newdev, dev); if (comp < 0) { TAILQ_INSERT_BEFORE(dev, newdev, next); diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index c8373e627a..852fcfc4dd 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -808,7 +808,8 @@ fslmc_vfio_process_group(void) bool is_dpmcp_in_blocklist = false, is_dpio_in_blocklist = false; int dpmcp_count = 0, dpio_count = 0, current_device; - TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, + dev_temp) { if (dev->dev_type == DPAA2_MPORTAL) { dpmcp_count++; if (dev->device.devargs && @@ -825,7 +826,8 @@ fslmc_vfio_process_group(void) /* Search the MCP as that should be initialized first. */ current_device = 0; - TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, + dev_temp) { if (dev->dev_type == DPAA2_MPORTAL) { current_device++; if (dev->device.devargs && @@ -872,7 +874,8 @@ fslmc_vfio_process_group(void) } current_device = 0; - TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { + RTE_TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, + dev_temp) { if (dev->dev_type == DPAA2_IO) current_device++; if (dev->device.devargs && diff --git a/drivers/bus/ifpga/rte_bus_ifpga.h b/drivers/bus/ifpga/rte_bus_ifpga.h index b43084155a..a85e90d384 100644 --- a/drivers/bus/ifpga/rte_bus_ifpga.h +++ b/drivers/bus/ifpga/rte_bus_ifpga.h @@ -28,9 +28,9 @@ struct rte_afu_device; struct rte_afu_driver; /** Double linked list of Intel FPGA AFU device. */ -TAILQ_HEAD(ifpga_afu_dev_list, rte_afu_device); +RTE_TAILQ_HEAD(ifpga_afu_dev_list, rte_afu_device); /** Double linked list of Intel FPGA AFU device drivers. */ -TAILQ_HEAD(ifpga_afu_drv_list, rte_afu_driver); +RTE_TAILQ_HEAD(ifpga_afu_drv_list, rte_afu_driver); #define IFPGA_BUS_BITSTREAM_PATH_MAX_LEN 256 @@ -71,7 +71,7 @@ struct rte_afu_shared { * A structure describing a AFU device. */ struct rte_afu_device { - TAILQ_ENTRY(rte_afu_device) next; /**< Next in device list. */ + RTE_TAILQ_ENTRY(rte_afu_device) next; /**< Next in device list. */ struct rte_device device; /**< Inherit core device */ struct rte_rawdev *rawdev; /**< Point Rawdev */ struct rte_afu_id id; /**< AFU id within FPGA. */ @@ -105,7 +105,7 @@ typedef int (afu_remove_t)(struct rte_afu_device *); * A structure describing a AFU device. */ struct rte_afu_driver { - TAILQ_ENTRY(rte_afu_driver) next; /**< Next afu driver. */ + RTE_TAILQ_ENTRY(rte_afu_driver) next; /**< Next afu driver. */ struct rte_driver driver; /**< Inherit core driver. */ afu_probe_t *probe; /**< Device Probe function. */ afu_remove_t *remove; /**< Device Remove function. */ diff --git a/drivers/bus/pci/pci_params.c b/drivers/bus/pci/pci_params.c index 691b5ea018..21c2e1d036 100644 --- a/drivers/bus/pci/pci_params.c +++ b/drivers/bus/pci/pci_params.c @@ -2,6 +2,8 @@ * Copyright 2018 Gaëtan Rivet */ +#include + #include #include #include diff --git a/drivers/bus/pci/rte_bus_pci.h b/drivers/bus/pci/rte_bus_pci.h index 583470e831..673a2850c1 100644 --- a/drivers/bus/pci/rte_bus_pci.h +++ b/drivers/bus/pci/rte_bus_pci.h @@ -19,7 +19,6 @@ extern "C" { #include #include #include -#include #include #include @@ -37,16 +36,16 @@ struct rte_pci_device; struct rte_pci_driver; /** List of PCI devices */ -TAILQ_HEAD(rte_pci_device_list, rte_pci_device); +RTE_TAILQ_HEAD(rte_pci_device_list, rte_pci_device); /** List of PCI drivers */ -TAILQ_HEAD(rte_pci_driver_list, rte_pci_driver); +RTE_TAILQ_HEAD(rte_pci_driver_list, rte_pci_driver); /* PCI Bus iterators */ #define FOREACH_DEVICE_ON_PCIBUS(p) \ - TAILQ_FOREACH(p, &(rte_pci_bus.device_list), next) + RTE_TAILQ_FOREACH(p, &(rte_pci_bus.device_list), next) #define FOREACH_DRIVER_ON_PCIBUS(p) \ - TAILQ_FOREACH(p, &(rte_pci_bus.driver_list), next) + RTE_TAILQ_FOREACH(p, &(rte_pci_bus.driver_list), next) struct rte_devargs; @@ -64,7 +63,7 @@ enum rte_pci_kernel_driver { * A structure describing a PCI device. */ struct rte_pci_device { - TAILQ_ENTRY(rte_pci_device) next; /**< Next probed PCI device. */ + RTE_TAILQ_ENTRY(rte_pci_device) next; /**< Next probed PCI device. */ struct rte_device device; /**< Inherit core device */ struct rte_pci_addr addr; /**< PCI location. */ struct rte_pci_id id; /**< PCI ID. */ @@ -160,7 +159,7 @@ typedef int (pci_dma_unmap_t)(struct rte_pci_device *dev, void *addr, * A structure describing a PCI driver. */ struct rte_pci_driver { - TAILQ_ENTRY(rte_pci_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(rte_pci_driver) next; /**< Next in list. */ struct rte_driver driver; /**< Inherit core driver. */ struct rte_pci_bus *bus; /**< PCI bus reference. */ rte_pci_probe_t *probe; /**< Device probe function. */ diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c index 644c452c76..39ba31be7d 100644 --- a/drivers/bus/pci/windows/pci.c +++ b/drivers/bus/pci/windows/pci.c @@ -1,6 +1,9 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright 2020 Mellanox Technologies, Ltd */ + +#include + #include #include #include diff --git a/drivers/bus/pci/windows/pci_netuio.c b/drivers/bus/pci/windows/pci_netuio.c index 1bf9133f71..a0b175a8fc 100644 --- a/drivers/bus/pci/windows/pci_netuio.c +++ b/drivers/bus/pci/windows/pci_netuio.c @@ -2,6 +2,8 @@ * Copyright(c) 2020 Intel Corporation. */ +#include + #include #include #include diff --git a/drivers/bus/vdev/rte_bus_vdev.h b/drivers/bus/vdev/rte_bus_vdev.h index fc315d10fa..2856799953 100644 --- a/drivers/bus/vdev/rte_bus_vdev.h +++ b/drivers/bus/vdev/rte_bus_vdev.h @@ -15,12 +15,11 @@ extern "C" { #endif -#include #include #include struct rte_vdev_device { - TAILQ_ENTRY(rte_vdev_device) next; /**< Next attached vdev */ + RTE_TAILQ_ENTRY(rte_vdev_device) next; /**< Next attached vdev */ struct rte_device device; /**< Inherit core device */ }; @@ -53,7 +52,7 @@ rte_vdev_device_args(const struct rte_vdev_device *dev) } /** Double linked list of virtual device drivers. */ -TAILQ_HEAD(vdev_driver_list, rte_vdev_driver); +RTE_TAILQ_HEAD(vdev_driver_list, rte_vdev_driver); /** * Probe function called for each virtual device driver once. @@ -107,7 +106,7 @@ typedef int (rte_vdev_dma_unmap_t)(struct rte_vdev_device *dev, void *addr, * A virtual device driver abstraction. */ struct rte_vdev_driver { - TAILQ_ENTRY(rte_vdev_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(rte_vdev_driver) next; /**< Next in list. */ struct rte_driver driver; /**< Inherited general driver. */ rte_vdev_probe_t *probe; /**< Virtual device probe function. */ rte_vdev_remove_t *remove; /**< Virtual device remove function. */ diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c index 281a2c34e8..a8d8b2327e 100644 --- a/drivers/bus/vdev/vdev.c +++ b/drivers/bus/vdev/vdev.c @@ -100,7 +100,8 @@ rte_vdev_remove_custom_scan(rte_vdev_scan_callback callback, void *user_arg) struct vdev_custom_scan *custom_scan, *tmp_scan; rte_spinlock_lock(&vdev_custom_scan_lock); - TAILQ_FOREACH_SAFE(custom_scan, &vdev_custom_scans, next, tmp_scan) { + RTE_TAILQ_FOREACH_SAFE(custom_scan, &vdev_custom_scans, next, + tmp_scan) { if (custom_scan->callback != callback || (custom_scan->user_arg != (void *)-1 && custom_scan->user_arg != user_arg)) diff --git a/drivers/bus/vmbus/rte_bus_vmbus.h b/drivers/bus/vmbus/rte_bus_vmbus.h index 4cf73ce815..6bcff66468 100644 --- a/drivers/bus/vmbus/rte_bus_vmbus.h +++ b/drivers/bus/vmbus/rte_bus_vmbus.h @@ -20,7 +20,6 @@ extern "C" { #include #include #include -#include #include #include @@ -38,15 +37,15 @@ struct rte_vmbus_bus; struct vmbus_channel; struct vmbus_mon_page; -TAILQ_HEAD(rte_vmbus_device_list, rte_vmbus_device); -TAILQ_HEAD(rte_vmbus_driver_list, rte_vmbus_driver); +RTE_TAILQ_HEAD(rte_vmbus_device_list, rte_vmbus_device); +RTE_TAILQ_HEAD(rte_vmbus_driver_list, rte_vmbus_driver); /* VMBus iterators */ #define FOREACH_DEVICE_ON_VMBUS(p) \ - TAILQ_FOREACH(p, &(rte_vmbus_bus.device_list), next) + RTE_TAILQ_FOREACH(p, &(rte_vmbus_bus.device_list), next) #define FOREACH_DRIVER_ON_VMBUS(p) \ - TAILQ_FOREACH(p, &(rte_vmbus_bus.driver_list), next) + RTE_TAILQ_FOREACH(p, &(rte_vmbus_bus.driver_list), next) /** Maximum number of VMBUS resources. */ enum hv_uio_map { @@ -62,7 +61,7 @@ enum hv_uio_map { * A structure describing a VMBUS device. */ struct rte_vmbus_device { - TAILQ_ENTRY(rte_vmbus_device) next; /**< Next probed VMBUS device */ + RTE_TAILQ_ENTRY(rte_vmbus_device) next; /**< Next probed VMBUS device */ const struct rte_vmbus_driver *driver; /**< Associated driver */ struct rte_device device; /**< Inherit core device */ rte_uuid_t device_id; /**< VMBUS device id */ @@ -93,7 +92,7 @@ typedef int (vmbus_remove_t)(struct rte_vmbus_device *); * A structure describing a VMBUS driver. */ struct rte_vmbus_driver { - TAILQ_ENTRY(rte_vmbus_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(rte_vmbus_driver) next; /**< Next in list. */ struct rte_driver driver; struct rte_vmbus_bus *bus; /**< VM bus reference. */ vmbus_probe_t *probe; /**< Device Probe function. */ diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c index 3b86410fb1..bbaa6dc46a 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c @@ -2040,7 +2040,7 @@ bnxt_ulp_cntxt_list_del(struct bnxt_ulp_context *ulp_ctx) struct ulp_context_list_entry *entry, *temp; rte_spinlock_lock(&bnxt_ulp_ctxt_lock); - TAILQ_FOREACH_SAFE(entry, &ulp_cntx_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(entry, &ulp_cntx_list, next, temp) { if (entry->ulp_ctx == ulp_ctx) { TAILQ_REMOVE(&ulp_cntx_list, entry, next); rte_free(entry); diff --git a/drivers/net/bonding/rte_eth_bond_flow.c b/drivers/net/bonding/rte_eth_bond_flow.c index 417f76bf60..65b77faae7 100644 --- a/drivers/net/bonding/rte_eth_bond_flow.c +++ b/drivers/net/bonding/rte_eth_bond_flow.c @@ -157,7 +157,7 @@ bond_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *err) /* Destroy all bond flows from its slaves instead of flushing them to * keep the LACP flow or any other external flows. */ - TAILQ_FOREACH_SAFE(flow, &internals->flow_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(flow, &internals->flow_list, next, tmp) { lret = bond_flow_destroy(dev, flow, err); if (unlikely(lret != 0)) ret = lret; diff --git a/drivers/net/failsafe/failsafe_flow.c b/drivers/net/failsafe/failsafe_flow.c index 5e2b5f7c67..354f9fec20 100644 --- a/drivers/net/failsafe/failsafe_flow.c +++ b/drivers/net/failsafe/failsafe_flow.c @@ -180,7 +180,7 @@ fs_flow_flush(struct rte_eth_dev *dev, return ret; } } - TAILQ_FOREACH_SAFE(flow, &PRIV(dev)->flow_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(flow, &PRIV(dev)->flow_list, next, tmp) { TAILQ_REMOVE(&PRIV(dev)->flow_list, flow, next); fs_flow_release(&flow); } diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 7a2a8281d2..bd97d93dd7 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -5438,7 +5438,7 @@ i40e_vsi_release(struct i40e_vsi *vsi) /* VSI has child to attach, release child first */ if (vsi->veb) { - TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) { + RTE_TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) { if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS) return -1; } @@ -5446,7 +5446,8 @@ i40e_vsi_release(struct i40e_vsi *vsi) } if (vsi->floating_veb) { - TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head, list, temp) { + RTE_TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head, + list, temp) { if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS) return -1; } @@ -5454,7 +5455,7 @@ i40e_vsi_release(struct i40e_vsi *vsi) /* Remove all macvlan filters of the VSI */ i40e_vsi_remove_all_macvlan_filter(vsi); - TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) rte_free(f); if (vsi->type != I40E_VSI_MAIN && @@ -6057,7 +6058,7 @@ i40e_vsi_config_vlan_filter(struct i40e_vsi *vsi, bool on) i = 0; /* Remove all existing mac */ - TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { mac_filter[i] = f->mac_info; ret = i40e_vsi_delete_mac(vsi, &f->mac_info.mac_addr); if (ret) { diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h index cd6deabd60..374b73e4a7 100644 --- a/drivers/net/i40e/i40e_ethdev.h +++ b/drivers/net/i40e/i40e_ethdev.h @@ -6,6 +6,7 @@ #define _I40E_ETHDEV_H_ #include +#include #include #include diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index 3c1570bd9c..e41a84f1d7 100644 --- a/drivers/net/i40e/i40e_flow.c +++ b/drivers/net/i40e/i40e_flow.c @@ -4917,7 +4917,7 @@ i40e_flow_flush_fdir_filter(struct i40e_pf *pf) } /* Delete FDIR flows in flow list. */ - TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { if (flow->filter_type == RTE_ETH_FILTER_FDIR) { TAILQ_REMOVE(&pf->flow_list, flow, node); } @@ -4972,7 +4972,7 @@ i40e_flow_flush_ethertype_filter(struct i40e_pf *pf) } /* Delete ethertype flows in flow list. */ - TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { if (flow->filter_type == RTE_ETH_FILTER_ETHERTYPE) { TAILQ_REMOVE(&pf->flow_list, flow, node); rte_free(flow); @@ -5000,7 +5000,7 @@ i40e_flow_flush_tunnel_filter(struct i40e_pf *pf) } /* Delete tunnel flows in flow list. */ - TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, temp) { if (flow->filter_type == RTE_ETH_FILTER_TUNNEL) { TAILQ_REMOVE(&pf->flow_list, flow, node); rte_free(flow); diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c index 1fb8c9abfc..6579b1a00b 100644 --- a/drivers/net/i40e/i40e_hash.c +++ b/drivers/net/i40e/i40e_hash.c @@ -1366,7 +1366,7 @@ i40e_hash_filter_flush(struct i40e_pf *pf) { struct rte_flow *flow, *next; - TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, next) { + RTE_TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, next) { if (flow->filter_type != RTE_ETH_FILTER_HASH) continue; diff --git a/drivers/net/i40e/rte_pmd_i40e.c b/drivers/net/i40e/rte_pmd_i40e.c index 2e34140c5b..ec24046440 100644 --- a/drivers/net/i40e/rte_pmd_i40e.c +++ b/drivers/net/i40e/rte_pmd_i40e.c @@ -216,7 +216,7 @@ i40e_vsi_rm_mac_filter(struct i40e_vsi *vsi) void *temp; /* remove all the MACs */ - TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { vlan_num = vsi->vlan_num; filter_type = f->mac_info.filter_type; if (filter_type == I40E_MACVLAN_PERFECT_MATCH || @@ -274,7 +274,7 @@ i40e_vsi_restore_mac_filter(struct i40e_vsi *vsi) void *temp; /* restore all the MACs */ - TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) { if (f->mac_info.filter_type == I40E_MACVLAN_PERFECT_MATCH || f->mac_info.filter_type == I40E_MACVLAN_HASH_MATCH) { /** @@ -563,7 +563,7 @@ rte_pmd_i40e_set_vf_mac_addr(uint16_t port, uint16_t vf_id, rte_ether_addr_copy(mac_addr, &vf->mac_addr); /* Remove all existing mac */ - TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) + RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) if (i40e_vsi_delete_mac(vsi, &f->mac_info.mac_addr) != I40E_SUCCESS) PMD_DRV_LOG(WARNING, "Delete MAC failed"); diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h index 90f80a73ac..940d4f79ec 100644 --- a/drivers/net/iavf/iavf.h +++ b/drivers/net/iavf/iavf.h @@ -5,6 +5,8 @@ #ifndef _IAVF_ETHDEV_H_ #define _IAVF_ETHDEV_H_ +#include + #include #include diff --git a/drivers/net/iavf/iavf_generic_flow.c b/drivers/net/iavf/iavf_generic_flow.c index 1fe270fb22..b86d99e57d 100644 --- a/drivers/net/iavf/iavf_generic_flow.c +++ b/drivers/net/iavf/iavf_generic_flow.c @@ -1637,7 +1637,7 @@ iavf_flow_init(struct iavf_adapter *ad) TAILQ_INIT(&vf->dist_parser_list); rte_spinlock_init(&vf->flow_ops_lock); - TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { if (engine->init == NULL) { PMD_INIT_LOG(ERR, "Invalid engine type (%d)", engine->type); @@ -1663,7 +1663,7 @@ iavf_flow_uninit(struct iavf_adapter *ad) struct iavf_flow_parser_node *p_parser; void *temp; - TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { if (engine->uninit) engine->uninit(ad); } @@ -1733,7 +1733,7 @@ iavf_unregister_parser(struct iavf_flow_parser *parser, if (list == NULL) return; - TAILQ_FOREACH_SAFE(p_parser, list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(p_parser, list, node, temp) { if (p_parser->parser->engine->type == parser->engine->type) { TAILQ_REMOVE(list, p_parser, node); rte_free(p_parser); @@ -1917,7 +1917,7 @@ iavf_parse_engine_create(struct iavf_adapter *ad, void *temp; void *meta = NULL; - TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { if (parser_node->parser->parse_pattern_action(ad, parser_node->parser->array, parser_node->parser->array_len, @@ -1946,7 +1946,7 @@ iavf_parse_engine_validate(struct iavf_adapter *ad, void *temp; void *meta = NULL; - TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { if (parser_node->parser->parse_pattern_action(ad, parser_node->parser->array, parser_node->parser->array_len, @@ -2089,7 +2089,7 @@ iavf_flow_is_valid(struct rte_flow *flow) void *temp; if (flow && flow->engine) { - TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { if (engine == flow->engine) return true; } @@ -2142,7 +2142,7 @@ iavf_flow_flush(struct rte_eth_dev *dev, void *temp; int ret = 0; - TAILQ_FOREACH_SAFE(p_flow, &vf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(p_flow, &vf->flow_list, node, temp) { ret = iavf_flow_destroy(dev, p_flow, error); if (ret) { PMD_DRV_LOG(ERR, "Failed to flush flows"); diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index f510bad381..4e4cdbcd7d 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -4,6 +4,7 @@ #include #include +#include #include #include diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index e24a3b6e16..66e33a18f8 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1109,7 +1109,7 @@ ice_remove_all_mac_vlan_filters(struct ice_vsi *vsi) if (!vsi || !vsi->mac_num) return -EINVAL; - TAILQ_FOREACH_SAFE(m_f, &vsi->mac_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(m_f, &vsi->mac_list, next, temp) { ret = ice_remove_mac_filter(vsi, &m_f->mac_info.mac_addr); if (ret != ICE_SUCCESS) { ret = -EINVAL; @@ -1120,7 +1120,7 @@ ice_remove_all_mac_vlan_filters(struct ice_vsi *vsi) if (vsi->vlan_num == 0) return 0; - TAILQ_FOREACH_SAFE(v_f, &vsi->vlan_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(v_f, &vsi->vlan_list, next, temp) { ret = ice_remove_vlan_filter(vsi, &v_f->vlan_info.vlan); if (ret != ICE_SUCCESS) { ret = -EINVAL; diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c index 13e3734172..3e6ed7005b 100644 --- a/drivers/net/ice/ice_generic_flow.c +++ b/drivers/net/ice/ice_generic_flow.c @@ -1820,7 +1820,7 @@ ice_flow_init(struct ice_adapter *ad) TAILQ_INIT(&pf->dist_parser_list); rte_spinlock_init(&pf->flow_ops_lock); - TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { if (engine->init == NULL) { PMD_INIT_LOG(ERR, "Invalid engine type (%d)", engine->type); @@ -1846,7 +1846,7 @@ ice_flow_uninit(struct ice_adapter *ad) struct ice_flow_parser_node *p_parser; void *temp; - TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) { if (engine->uninit) engine->uninit(ad); } @@ -1946,7 +1946,7 @@ ice_unregister_parser(struct ice_flow_parser *parser, if (list == NULL) return; - TAILQ_FOREACH_SAFE(p_parser, list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(p_parser, list, node, temp) { if (p_parser->parser->engine->type == parser->engine->type) { TAILQ_REMOVE(list, p_parser, node); rte_free(p_parser); @@ -2276,7 +2276,7 @@ ice_parse_engine_create(struct ice_adapter *ad, void *meta = NULL; void *temp; - TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { int ret; if (parser_node->parser->parse_pattern_action(ad, @@ -2309,7 +2309,7 @@ ice_parse_engine_validate(struct ice_adapter *ad, struct ice_flow_parser_node *parser_node; void *temp; - TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(parser_node, parser_list, node, temp) { if (parser_node->parser->parse_pattern_action(ad, parser_node->parser->array, parser_node->parser->array_len, @@ -2481,7 +2481,7 @@ ice_flow_flush(struct rte_eth_dev *dev, void *temp; int ret = 0; - TAILQ_FOREACH_SAFE(p_flow, &pf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(p_flow, &pf->flow_list, node, temp) { ret = ice_flow_destroy(dev, p_flow, error); if (ret) { PMD_DRV_LOG(ERR, "Failed to flush flows"); @@ -2546,7 +2546,7 @@ ice_flow_redirect(struct ice_adapter *ad, rte_spinlock_lock(&pf->flow_ops_lock); - TAILQ_FOREACH_SAFE(p_flow, &pf->flow_list, node, temp) { + RTE_TAILQ_FOREACH_SAFE(p_flow, &pf->flow_list, node, temp) { if (!p_flow->engine->redirect) continue; ret = p_flow->engine->redirect(ad, p_flow, rd); diff --git a/drivers/net/ipn3ke/ipn3ke_flow.c b/drivers/net/ipn3ke/ipn3ke_flow.c index c702e19ea5..f5867ca055 100644 --- a/drivers/net/ipn3ke/ipn3ke_flow.c +++ b/drivers/net/ipn3ke/ipn3ke_flow.c @@ -1231,7 +1231,7 @@ ipn3ke_flow_flush(struct rte_eth_dev *dev, struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); struct rte_flow *flow, *temp; - TAILQ_FOREACH_SAFE(flow, &hw->flow_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(flow, &hw->flow_list, next, temp) { TAILQ_REMOVE(&hw->flow_list, flow, next); rte_free(flow); } diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index b610ad3ef4..c6370cd1d6 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -15132,7 +15132,7 @@ __flow_dv_destroy_sub_policy_rules(struct rte_eth_dev *dev, policy->act_cnt[i].fate_action == MLX5_FLOW_FATE_MTR) next_fm = mlx5_flow_meter_find(priv, policy->act_cnt[i].next_mtr_id, NULL); - TAILQ_FOREACH_SAFE(color_rule, &sub_policy->color_rules[i], + RTE_TAILQ_FOREACH_SAFE(color_rule, &sub_policy->color_rules[i], next_port, tmp) { claim_zero(mlx5_flow_os_destroy_flow(color_rule->rule)); tbl = container_of(color_rule->matcher->tbl, diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index a24bd9c7ae..ba4e9fca17 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -2168,7 +2168,7 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error) priv->mtr_idx_tbl = NULL; } } else { - TAILQ_FOREACH_SAFE(legacy_fm, fms, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(legacy_fm, fms, next, tmp) { fm = &legacy_fm->fm; if (mlx5_flow_meter_params_flush(dev, fm, 0)) return -rte_mtr_error_set(error, EINVAL, diff --git a/drivers/net/softnic/rte_eth_softnic_flow.c b/drivers/net/softnic/rte_eth_softnic_flow.c index 27eaf380cd..7d054c38d2 100644 --- a/drivers/net/softnic/rte_eth_softnic_flow.c +++ b/drivers/net/softnic/rte_eth_softnic_flow.c @@ -2207,7 +2207,8 @@ pmd_flow_flush(struct rte_eth_dev *dev, void *temp; int status; - TAILQ_FOREACH_SAFE(flow, &table->flows, node, temp) { + RTE_TAILQ_FOREACH_SAFE(flow, &table->flows, node, + temp) { /* Rule delete. */ status = softnic_pipeline_table_rule_delete (softnic, diff --git a/drivers/net/softnic/rte_eth_softnic_swq.c b/drivers/net/softnic/rte_eth_softnic_swq.c index 2083d0a976..afe6f05e29 100644 --- a/drivers/net/softnic/rte_eth_softnic_swq.c +++ b/drivers/net/softnic/rte_eth_softnic_swq.c @@ -39,7 +39,7 @@ softnic_softnic_swq_free_keep_rxq_txq(struct pmd_internals *p) { struct softnic_swq *swq, *tswq; - TAILQ_FOREACH_SAFE(swq, &p->swq_list, node, tswq) { + RTE_TAILQ_FOREACH_SAFE(swq, &p->swq_list, node, tswq) { if ((strncmp(swq->name, "RXQ", strlen("RXQ")) == 0) || (strncmp(swq->name, "TXQ", strlen("TXQ")) == 0)) continue; diff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c index c961e18d67..7b80370b36 100644 --- a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c +++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c @@ -1606,7 +1606,7 @@ remove_hw_queues_from_list(struct dpaa2_dpdmai_dev *dpdmai_dev) DPAA2_QDMA_FUNC_TRACE(); - TAILQ_FOREACH_SAFE(queue, &qdma_queue_list, next, tqueue) { + RTE_TAILQ_FOREACH_SAFE(queue, &qdma_queue_list, next, tqueue) { if (queue->dpdmai_dev == dpdmai_dev) { TAILQ_REMOVE(&qdma_queue_list, queue, next); rte_free(queue); diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h index 7017124414..3ebf62e697 100644 --- a/lib/bbdev/rte_bbdev.h +++ b/lib/bbdev/rte_bbdev.h @@ -434,7 +434,7 @@ struct rte_bbdev_callback; struct rte_intr_handle; /** Structure to keep track of registered callbacks */ -TAILQ_HEAD(rte_bbdev_cb_list, rte_bbdev_callback); +RTE_TAILQ_HEAD(rte_bbdev_cb_list, rte_bbdev_callback); /** * @internal The data structure associated with a device. Drivers can access diff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pmd.h index ae3aac59ae..8cc9051e09 100644 --- a/lib/cryptodev/cryptodev_pmd.h +++ b/lib/cryptodev/cryptodev_pmd.h @@ -62,7 +62,7 @@ struct rte_cryptodev_global { /* Cryptodev driver, containing the driver ID */ struct cryptodev_driver { - TAILQ_ENTRY(cryptodev_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(cryptodev_driver) next; /**< Next in list. */ const struct rte_driver *driver; uint8_t id; }; diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h index bb01f0f195..d43905c46f 100644 --- a/lib/cryptodev/rte_cryptodev.h +++ b/lib/cryptodev/rte_cryptodev.h @@ -879,7 +879,7 @@ typedef uint16_t (*enqueue_pkt_burst_t)(void *qp, struct rte_cryptodev_callback; /** Structure to keep track of registered callbacks */ -TAILQ_HEAD(rte_cryptodev_cb_list, rte_cryptodev_callback); +RTE_TAILQ_HEAD(rte_cryptodev_cb_list, rte_cryptodev_callback); /** * Structure used to hold information about the callbacks to be called for a diff --git a/lib/eal/common/eal_common_devargs.c b/lib/eal/common/eal_common_devargs.c index 7ab9e71b2a..411dd6a75f 100644 --- a/lib/eal/common/eal_common_devargs.c +++ b/lib/eal/common/eal_common_devargs.c @@ -330,7 +330,7 @@ rte_devargs_insert(struct rte_devargs **da) if (*da == NULL || (*da)->bus == NULL) return -1; - TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) { if (listed_da == *da) /* devargs already in the list */ return 0; @@ -397,7 +397,7 @@ rte_devargs_remove(struct rte_devargs *devargs) if (devargs == NULL || devargs->bus == NULL) return -1; - TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) { if (strcmp(d->bus->name, devargs->bus->name) == 0 && strcmp(d->name, devargs->name) == 0) { TAILQ_REMOVE(&devargs_list, d, next); diff --git a/lib/eal/common/eal_common_log.c b/lib/eal/common/eal_common_log.c index ec8fe23a7f..1be35f5397 100644 --- a/lib/eal/common/eal_common_log.c +++ b/lib/eal/common/eal_common_log.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index eaef57312f..1802e3d9e1 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -277,7 +277,7 @@ eal_option_device_parse(void) void *tmp; int ret = 0; - TAILQ_FOREACH_SAFE(devopt, &devopt_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(devopt, &devopt_list, next, tmp) { if (ret == 0) { ret = rte_devargs_add(devopt->type, devopt->arg); if (ret) diff --git a/lib/eal/common/eal_private.h b/lib/eal/common/eal_private.h index 64cf4e81c8..86dab1f057 100644 --- a/lib/eal/common/eal_private.h +++ b/lib/eal/common/eal_private.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include diff --git a/lib/eal/freebsd/include/rte_os.h b/lib/eal/freebsd/include/rte_os.h index 627f0483ab..9d8a69008c 100644 --- a/lib/eal/freebsd/include/rte_os.h +++ b/lib/eal/freebsd/include/rte_os.h @@ -11,6 +11,16 @@ */ #include +#include + +/* These macros are compatible with system's sys/queue.h. */ +#define RTE_TAILQ_HEAD(name, type) TAILQ_HEAD(name, type) +#define RTE_TAILQ_ENTRY(type) TAILQ_ENTRY(type) +#define RTE_TAILQ_FOREACH(var, head, field) TAILQ_FOREACH(var, head, field) +#define RTE_TAILQ_FIRST(head) TAILQ_FIRST(head) +#define RTE_TAILQ_NEXT(elem, field) TAILQ_NEXT(elem, field) +#define RTE_STAILQ_HEAD(name, type) STAILQ_HEAD(name, type) +#define RTE_STAILQ_ENTRY(type) STAILQ_ENTRY(type) typedef cpuset_t rte_cpuset_t; #define RTE_HAS_CPUSET diff --git a/lib/eal/include/rte_bus.h b/lib/eal/include/rte_bus.h index 8816e40b60..bbbb6efd28 100644 --- a/lib/eal/include/rte_bus.h +++ b/lib/eal/include/rte_bus.h @@ -19,13 +19,12 @@ extern "C" { #endif #include -#include #include #include /** Double linked list of buses */ -TAILQ_HEAD(rte_bus_list, rte_bus); +RTE_TAILQ_HEAD(rte_bus_list, rte_bus); /** @@ -260,7 +259,7 @@ typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void); * A structure describing a generic bus. */ struct rte_bus { - TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */ + RTE_TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */ const char *name; /**< Name of the bus */ rte_bus_scan_t scan; /**< Scan for devices attached to bus */ rte_bus_probe_t probe; /**< Probe devices on bus */ diff --git a/lib/eal/include/rte_class.h b/lib/eal/include/rte_class.h index 856d09b22d..d560339652 100644 --- a/lib/eal/include/rte_class.h +++ b/lib/eal/include/rte_class.h @@ -22,18 +22,16 @@ extern "C" { #endif -#include - #include /** Double linked list of classes */ -TAILQ_HEAD(rte_class_list, rte_class); +RTE_TAILQ_HEAD(rte_class_list, rte_class); /** * A structure describing a generic device class. */ struct rte_class { - TAILQ_ENTRY(rte_class) next; /**< Next device class in linked list */ + RTE_TAILQ_ENTRY(rte_class) next; /**< Next device class in linked list */ const char *name; /**< Name of the class */ rte_dev_iterate_t dev_iterate; /**< Device iterator. */ }; diff --git a/lib/eal/include/rte_dev.h b/lib/eal/include/rte_dev.h index aec70300ad..6c3f774672 100644 --- a/lib/eal/include/rte_dev.h +++ b/lib/eal/include/rte_dev.h @@ -18,7 +18,6 @@ extern "C" { #endif #include -#include #include #include @@ -69,7 +68,7 @@ struct rte_mem_resource { * A structure describing a device driver. */ struct rte_driver { - TAILQ_ENTRY(rte_driver) next; /**< Next in list. */ + RTE_TAILQ_ENTRY(rte_driver) next; /**< Next in list. */ const char *name; /**< Driver name. */ const char *alias; /**< Driver alias. */ }; @@ -84,7 +83,7 @@ struct rte_driver { * A structure describing a generic device. */ struct rte_device { - TAILQ_ENTRY(rte_device) next; /**< Next device */ + RTE_TAILQ_ENTRY(rte_device) next; /**< Next device */ const char *name; /**< Device name */ const struct rte_driver *driver; /**< Driver assigned after probing */ const struct rte_bus *bus; /**< Bus handle assigned on scan */ diff --git a/lib/eal/include/rte_devargs.h b/lib/eal/include/rte_devargs.h index 665f4aaaa9..71c8af9df3 100644 --- a/lib/eal/include/rte_devargs.h +++ b/lib/eal/include/rte_devargs.h @@ -21,7 +21,6 @@ extern "C" { #endif #include -#include #include #include @@ -70,7 +69,7 @@ enum rte_devtype { */ struct rte_devargs { /** Next in list. */ - TAILQ_ENTRY(rte_devargs) next; + RTE_TAILQ_ENTRY(rte_devargs) next; /** Type of device. */ enum rte_devtype type; /** Device policy. */ diff --git a/lib/eal/include/rte_log.h b/lib/eal/include/rte_log.h index b706bb8710..bb3523467b 100644 --- a/lib/eal/include/rte_log.h +++ b/lib/eal/include/rte_log.h @@ -21,7 +21,6 @@ extern "C" { #include #include #include -#include #include #include diff --git a/lib/eal/include/rte_service.h b/lib/eal/include/rte_service.h index c7d037d862..1c9275c32a 100644 --- a/lib/eal/include/rte_service.h +++ b/lib/eal/include/rte_service.h @@ -29,7 +29,6 @@ extern "C" { #include #include -#include #include #include diff --git a/lib/eal/include/rte_tailq.h b/lib/eal/include/rte_tailq.h index b6fe4e5f78..0f67f9e4db 100644 --- a/lib/eal/include/rte_tailq.h +++ b/lib/eal/include/rte_tailq.h @@ -15,17 +15,16 @@ extern "C" { #endif -#include #include #include /** dummy structure type used by the rte_tailq APIs */ struct rte_tailq_entry { - TAILQ_ENTRY(rte_tailq_entry) next; /**< Pointer entries for a tailq list */ + RTE_TAILQ_ENTRY(rte_tailq_entry) next; /**< Pointer entries for a tailq list */ void *data; /**< Pointer to the data referenced by this tailq entry */ }; /** dummy */ -TAILQ_HEAD(rte_tailq_entry_head, rte_tailq_entry); +RTE_TAILQ_HEAD(rte_tailq_entry_head, rte_tailq_entry); #define RTE_TAILQ_NAMESIZE 32 @@ -48,7 +47,7 @@ struct rte_tailq_elem { * rte_eal_tailqs_init() */ struct rte_tailq_head *head; - TAILQ_ENTRY(rte_tailq_elem) next; + RTE_TAILQ_ENTRY(rte_tailq_elem) next; const char name[RTE_TAILQ_NAMESIZE]; }; @@ -126,12 +125,10 @@ RTE_INIT(tailqinitfn_ ##t) \ } /* This macro permits both remove and free var within the loop safely.*/ -#ifndef TAILQ_FOREACH_SAFE -#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = TAILQ_FIRST((head)); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ +#define RTE_TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = RTE_TAILQ_FIRST((head)); \ + (var) && ((tvar) = RTE_TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) -#endif #ifdef __cplusplus } diff --git a/lib/eal/linux/include/rte_os.h b/lib/eal/linux/include/rte_os.h index 1618b4df22..35c07c70cb 100644 --- a/lib/eal/linux/include/rte_os.h +++ b/lib/eal/linux/include/rte_os.h @@ -11,6 +11,16 @@ */ #include +#include + +/* These macros are compatible with system's sys/queue.h. */ +#define RTE_TAILQ_HEAD(name, type) TAILQ_HEAD(name, type) +#define RTE_TAILQ_ENTRY(type) TAILQ_ENTRY(type) +#define RTE_TAILQ_FOREACH(var, head, field) TAILQ_FOREACH(var, head, field) +#define RTE_TAILQ_FIRST(head) TAILQ_FIRST(head) +#define RTE_TAILQ_NEXT(elem, field) TAILQ_NEXT(elem, field) +#define RTE_STAILQ_HEAD(name, type) STAILQ_HEAD(name, type) +#define RTE_STAILQ_ENTRY(type) STAILQ_ENTRY(type) #ifdef CPU_SETSIZE /* may require _GNU_SOURCE */ typedef cpu_set_t rte_cpuset_t; diff --git a/lib/eal/windows/eal_alarm.c b/lib/eal/windows/eal_alarm.c index e5dc54efb8..103c1f909d 100644 --- a/lib/eal/windows/eal_alarm.c +++ b/lib/eal/windows/eal_alarm.c @@ -4,6 +4,7 @@ #include #include +#include #include #include diff --git a/lib/eal/windows/include/rte_os.h b/lib/eal/windows/include/rte_os.h index 66c711d458..a0a311495e 100644 --- a/lib/eal/windows/include/rte_os.h +++ b/lib/eal/windows/include/rte_os.h @@ -18,6 +18,33 @@ extern "C" { #endif +/* These macros are compatible with bundled sys/queue.h. */ +#define RTE_TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; \ + struct type **tqh_last; \ +} +#define RTE_TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; \ + struct type **tqe_prev; \ +} +#define RTE_TAILQ_FOREACH(var, head, field) \ + for ((var) = RTE_TAILQ_FIRST((head)); \ + (var); \ + (var) = RTE_TAILQ_NEXT((var), field)) +#define RTE_TAILQ_FIRST(head) ((head)->tqh_first) +#define RTE_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) +#define RTE_STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first; \ + struct type **stqh_last; \ +} +#define RTE_STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; \ +} + /* cpu_set macros implementation */ #define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2) #define RTE_CPU_OR(dst, src1, src2) CPU_OR(dst, src1, src2) diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c index 77f46809f8..5bf517fee9 100644 --- a/lib/efd/rte_efd.c +++ b/lib/efd/rte_efd.c @@ -759,7 +759,7 @@ rte_efd_free(struct rte_efd_table *table) efd_list = RTE_TAILQ_CAST(rte_efd_tailq.head, rte_efd_list); rte_mcfg_tailq_write_lock(); - TAILQ_FOREACH_SAFE(te, efd_list, next, temp) { + RTE_TAILQ_FOREACH_SAFE(te, efd_list, next, temp) { if (te->data == (void *) table) { TAILQ_REMOVE(efd_list, te, next); rte_free(te); diff --git a/lib/ethdev/rte_ethdev_core.h b/lib/ethdev/rte_ethdev_core.h index edf96de2dc..d2c9ec42c7 100644 --- a/lib/ethdev/rte_ethdev_core.h +++ b/lib/ethdev/rte_ethdev_core.h @@ -21,7 +21,7 @@ struct rte_eth_dev_callback; /** @internal Structure to keep track of registered callbacks */ -TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback); +RTE_TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback); struct rte_eth_dev; diff --git a/lib/hash/rte_fbk_hash.h b/lib/hash/rte_fbk_hash.h index c4d6976d2b..9c3a61c1d6 100644 --- a/lib/hash/rte_fbk_hash.h +++ b/lib/hash/rte_fbk_hash.h @@ -17,7 +17,6 @@ #include #include -#include #ifdef __cplusplus extern "C" { diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c index d5a95a6e00..696a1121e2 100644 --- a/lib/hash/rte_thash.c +++ b/lib/hash/rte_thash.c @@ -2,6 +2,8 @@ * Copyright(c) 2021 Intel Corporation */ +#include + #include #include #include diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index 0bfe64b14e..08555fde6a 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -62,7 +62,7 @@ struct ip_frag_key { * First two entries in the frags[] array are for the last and first fragments. */ struct ip_frag_pkt { - TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ + RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ struct ip_frag_key key; /**< fragmentation key */ uint64_t start; /**< creation timestamp */ uint32_t total_size; /**< expected reassembled size */ @@ -83,7 +83,7 @@ struct rte_ip_frag_death_row { /**< mbufs to be freed */ }; -TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ +RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ /** fragmentation table statistics */ struct ip_frag_tbl_stat { diff --git a/lib/mempool/rte_mempool.c b/lib/mempool/rte_mempool.c index 59a588425b..c5f859ae71 100644 --- a/lib/mempool/rte_mempool.c +++ b/lib/mempool/rte_mempool.c @@ -1337,7 +1337,7 @@ void rte_mempool_walk(void (*func)(struct rte_mempool *, void *), rte_mcfg_mempool_read_lock(); - TAILQ_FOREACH_SAFE(te, mempool_list, next, tmp_te) { + RTE_TAILQ_FOREACH_SAFE(te, mempool_list, next, tmp_te) { (*func)((struct rte_mempool *) te->data, arg); } diff --git a/lib/mempool/rte_mempool.h b/lib/mempool/rte_mempool.h index 4235d6f0bf..f57ecbd6fc 100644 --- a/lib/mempool/rte_mempool.h +++ b/lib/mempool/rte_mempool.h @@ -38,7 +38,6 @@ #include #include #include -#include #include #include @@ -141,7 +140,7 @@ struct rte_mempool_objsz { * double-frees. */ struct rte_mempool_objhdr { - STAILQ_ENTRY(rte_mempool_objhdr) next; /**< Next in list. */ + RTE_STAILQ_ENTRY(rte_mempool_objhdr) next; /**< Next in list. */ struct rte_mempool *mp; /**< The mempool owning the object. */ rte_iova_t iova; /**< IO address of the object. */ #ifdef RTE_LIBRTE_MEMPOOL_DEBUG @@ -152,7 +151,7 @@ struct rte_mempool_objhdr { /** * A list of object headers type */ -STAILQ_HEAD(rte_mempool_objhdr_list, rte_mempool_objhdr); +RTE_STAILQ_HEAD(rte_mempool_objhdr_list, rte_mempool_objhdr); #ifdef RTE_LIBRTE_MEMPOOL_DEBUG @@ -171,7 +170,7 @@ struct rte_mempool_objtlr { /** * A list of memory where objects are stored */ -STAILQ_HEAD(rte_mempool_memhdr_list, rte_mempool_memhdr); +RTE_STAILQ_HEAD(rte_mempool_memhdr_list, rte_mempool_memhdr); /** * Callback used to free a memory chunk @@ -186,7 +185,7 @@ typedef void (rte_mempool_memchunk_free_cb_t)(struct rte_mempool_memhdr *memhdr, * and physically contiguous. */ struct rte_mempool_memhdr { - STAILQ_ENTRY(rte_mempool_memhdr) next; /**< Next in list. */ + RTE_STAILQ_ENTRY(rte_mempool_memhdr) next; /**< Next in list. */ struct rte_mempool *mp; /**< The mempool owning the chunk */ void *addr; /**< Virtual address of the chunk */ rte_iova_t iova; /**< IO address of the chunk */ diff --git a/lib/pci/rte_pci.h b/lib/pci/rte_pci.h index 1f33d687f4..71cbd441c7 100644 --- a/lib/pci/rte_pci.h +++ b/lib/pci/rte_pci.h @@ -18,7 +18,6 @@ extern "C" { #include #include -#include #include #include diff --git a/lib/ring/rte_ring_core.h b/lib/ring/rte_ring_core.h index 16718ca7f1..43ce1a29d4 100644 --- a/lib/ring/rte_ring_core.h +++ b/lib/ring/rte_ring_core.h @@ -26,7 +26,6 @@ extern "C" { #include #include #include -#include #include #include #include diff --git a/lib/table/rte_swx_table.h b/lib/table/rte_swx_table.h index e23f2304c6..f93e5f3f95 100644 --- a/lib/table/rte_swx_table.h +++ b/lib/table/rte_swx_table.h @@ -16,7 +16,8 @@ extern "C" { */ #include -#include + +#include /** Match type. */ enum rte_swx_table_match_type { @@ -68,7 +69,7 @@ struct rte_swx_table_entry { /** Used to facilitate the membership of this table entry to a * linked list. */ - TAILQ_ENTRY(rte_swx_table_entry) node; + RTE_TAILQ_ENTRY(rte_swx_table_entry) node; /** Key value for the current entry. Array of *key_size* bytes or NULL * if the *key_size* for the current table is 0. @@ -111,7 +112,7 @@ struct rte_swx_table_entry { }; /** List of table entries. */ -TAILQ_HEAD(rte_swx_table_entry_list, rte_swx_table_entry); +RTE_TAILQ_HEAD(rte_swx_table_entry_list, rte_swx_table_entry); /** * Table memory footprint get diff --git a/lib/table/rte_swx_table_selector.h b/lib/table/rte_swx_table_selector.h index 71b6a74810..62988d2856 100644 --- a/lib/table/rte_swx_table_selector.h +++ b/lib/table/rte_swx_table_selector.h @@ -16,7 +16,6 @@ extern "C" { */ #include -#include #include @@ -56,7 +55,7 @@ struct rte_swx_table_selector_params { /** Group member parameters. */ struct rte_swx_table_selector_member { /** Linked list connectivity. */ - TAILQ_ENTRY(rte_swx_table_selector_member) node; + RTE_TAILQ_ENTRY(rte_swx_table_selector_member) node; /** Member ID. */ uint32_t member_id; @@ -66,7 +65,7 @@ struct rte_swx_table_selector_member { }; /** List of group members. */ -TAILQ_HEAD(rte_swx_table_selector_member_list, rte_swx_table_selector_member); +RTE_TAILQ_HEAD(rte_swx_table_selector_member_list, rte_swx_table_selector_member); /** Group parameters. */ struct rte_swx_table_selector_group { diff --git a/lib/vhost/iotlb.c b/lib/vhost/iotlb.c index e0b67721b6..e4a445e709 100644 --- a/lib/vhost/iotlb.c +++ b/lib/vhost/iotlb.c @@ -32,7 +32,7 @@ vhost_user_iotlb_pending_remove_all(struct vhost_virtqueue *vq) rte_rwlock_write_lock(&vq->iotlb_pending_lock); - TAILQ_FOREACH_SAFE(node, &vq->iotlb_pending_list, next, temp_node) { + RTE_TAILQ_FOREACH_SAFE(node, &vq->iotlb_pending_list, next, temp_node) { TAILQ_REMOVE(&vq->iotlb_pending_list, node, next); rte_mempool_put(vq->iotlb_pool, node); } @@ -100,7 +100,8 @@ vhost_user_iotlb_pending_remove(struct vhost_virtqueue *vq, rte_rwlock_write_lock(&vq->iotlb_pending_lock); - TAILQ_FOREACH_SAFE(node, &vq->iotlb_pending_list, next, temp_node) { + RTE_TAILQ_FOREACH_SAFE(node, &vq->iotlb_pending_list, next, + temp_node) { if (node->iova < iova) continue; if (node->iova >= iova + size) @@ -121,7 +122,7 @@ vhost_user_iotlb_cache_remove_all(struct vhost_virtqueue *vq) rte_rwlock_write_lock(&vq->iotlb_lock); - TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { + RTE_TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { TAILQ_REMOVE(&vq->iotlb_list, node, next); rte_mempool_put(vq->iotlb_pool, node); } @@ -141,7 +142,7 @@ vhost_user_iotlb_cache_random_evict(struct vhost_virtqueue *vq) entry_idx = rte_rand() % vq->iotlb_cache_nr; - TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { + RTE_TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { if (!entry_idx) { TAILQ_REMOVE(&vq->iotlb_list, node, next); rte_mempool_put(vq->iotlb_pool, node); @@ -218,7 +219,7 @@ vhost_user_iotlb_cache_remove(struct vhost_virtqueue *vq, rte_rwlock_write_lock(&vq->iotlb_lock); - TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { + RTE_TAILQ_FOREACH_SAFE(node, &vq->iotlb_list, next, temp_node) { /* Sorted list */ if (unlikely(iova + size < node->iova)) break; diff --git a/lib/vhost/rte_vdpa_dev.h b/lib/vhost/rte_vdpa_dev.h index bfada387b0..b0f494815f 100644 --- a/lib/vhost/rte_vdpa_dev.h +++ b/lib/vhost/rte_vdpa_dev.h @@ -71,7 +71,7 @@ struct rte_vdpa_dev_ops { * vdpa device structure includes device address and device operations. */ struct rte_vdpa_device { - TAILQ_ENTRY(rte_vdpa_device) next; + RTE_TAILQ_ENTRY(rte_vdpa_device) next; /** Generic device information */ struct rte_device *device; /** vdpa device operations */ diff --git a/lib/vhost/vdpa.c b/lib/vhost/vdpa.c index 99a926a772..6dd91859ac 100644 --- a/lib/vhost/vdpa.c +++ b/lib/vhost/vdpa.c @@ -115,7 +115,7 @@ rte_vdpa_unregister_device(struct rte_vdpa_device *dev) int ret = -1; rte_spinlock_lock(&vdpa_device_list_lock); - TAILQ_FOREACH_SAFE(cur_dev, &vdpa_device_list, next, tmp_dev) { + RTE_TAILQ_FOREACH_SAFE(cur_dev, &vdpa_device_list, next, tmp_dev) { if (dev != cur_dev) continue; -- 2.20.1