f1f6ebc0ea
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 <sys/queue.h>" 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 <sys/queue.h> to rte_os.h in Windows EAL. Note that these RTE_ macros are compatible with <sys/queue.h>, both at the level of API (to use with <sys/queue.h> macros in C files) and ABI (to avoid breaking it). Additionally, the TAILQ_FOREACH_SAFE is not part of <sys/queue.h>, the patch replaces it with RTE_TAILQ_FOREACH_SAFE. [1] http://mails.dpdk.org/archives/dev/2021-August/216304.html Suggested-by: Nick Connolly <nick.connolly@mayadata.io> Suggested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Signed-off-by: William Tu <u9012063@gmail.com> Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Acked-by: Narcisa Vasile <navasile@linux.microsoft.com> |
||
---|---|---|
.. | ||
meson.build | ||
rte_lru_arm64.h | ||
rte_lru_x86.h | ||
rte_lru.h | ||
rte_swx_table_em.c | ||
rte_swx_table_em.h | ||
rte_swx_table_learner.c | ||
rte_swx_table_learner.h | ||
rte_swx_table_selector.c | ||
rte_swx_table_selector.h | ||
rte_swx_table_wm.c | ||
rte_swx_table_wm.h | ||
rte_swx_table.h | ||
rte_table_acl.c | ||
rte_table_acl.h | ||
rte_table_array.c | ||
rte_table_array.h | ||
rte_table_hash_cuckoo.c | ||
rte_table_hash_cuckoo.h | ||
rte_table_hash_ext.c | ||
rte_table_hash_func_arm64.h | ||
rte_table_hash_func.h | ||
rte_table_hash_key8.c | ||
rte_table_hash_key16.c | ||
rte_table_hash_key32.c | ||
rte_table_hash_lru.c | ||
rte_table_hash.h | ||
rte_table_lpm_ipv6.c | ||
rte_table_lpm_ipv6.h | ||
rte_table_lpm.c | ||
rte_table_lpm.h | ||
rte_table_stub.c | ||
rte_table_stub.h | ||
rte_table.h | ||
version.map |