Hi Ye, Thank you for the comments! > On Oct 16, 2019, at 1:23 AM, Ye Xiaolong <xiaolong...@intel.com> wrote: > > Hi, > > On 10/03, Dharmik Thakkar wrote: >> Compilation issue arises due to multiple definitions of 'bool' >> in 'ixgbe_ethdev.h'. > > Which compiler would trigger this compilation issue? gcc version 7.4.0 Compilation issue arises when ’stdbool.h’ gets included along with one of the header files with 'typedef int bool;’, thereby leading to multiple definitions of ‘bool’. I faced this issue while working on 'https://patches.dpdk.org/patch/58333/‘ wherein I included ‘rte_rcu_qsbr.h’ (which includes ’stdbool.h’) in ‘rte_hash.h’. Now, ‘ixgbe_ethdev.c’ includes ’stdbool.h’ (<- rte_rcu_qsbr.h <- rte_hash.h) along with ‘ixgbe_osdep.h’ (<- ixgbe_type.h <- ixgbe_api.h <- ixgbe_ethdev.h) which has 'typedef int bool;’ > And we have several "typedef int bool" in multiple drivers, > > drivers/net/bnx2x/bnx2x_ethdev.h:50:typedef int bool; > drivers/net/cxgbe/cxgbe_compat.h:89:typedef int bool; > drivers/net/e1000/base/e1000_osdep.h:61:typedef int bool; > drivers/net/fm10k/base/fm10k_osdep.h:50:typedef int bool; > drivers/net/ixgbe/base/ixgbe_osdep.h:86:typedef int bool; > drivers/net/qede/base/bcm_osal.h:74:typedef int bool; > drivers/net/vmxnet3/base/vmxnet3_osdep.h:12:typedef int bool; > > Do you need to change them all? Yes, I will fix these and submit a patch series. > > Thanks, > Xiaolong > >> >> Error: >> '/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c: In function >> ‘ixgbe_dev_setup_link_alarm_handler’: >> /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:4075:43: >> error: passing argument 3 of ‘ixgbe_get_link_capabilities’ from >> incompatible pointer type [-Werror=incompatible-pointer-types] >> ixgbe_get_link_capabilities(hw, &speed, &autoneg); >> ^ >> In file included from /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:41:0: >> /dpdk/drivers/net/ixgbe/base/ixgbe_api.h:63:5: note: expected >> ‘bool * {aka int *}’ but argument is of type ‘_Bool *’' >> >> Signed-off-by: Dharmik Thakkar <dharmik.thak...@arm.com> >> Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> >> --- >> drivers/net/ixgbe/base/ixgbe_osdep.h | 4 +--- >> drivers/net/ixgbe/ixgbe_ethdev.c | 7 ++++--- >> 2 files changed, 5 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h >> b/drivers/net/ixgbe/base/ixgbe_osdep.h >> index ea8dc1cbe570..844d1701f595 100644 >> --- a/drivers/net/ixgbe/base/ixgbe_osdep.h >> +++ b/drivers/net/ixgbe/base/ixgbe_osdep.h >> @@ -9,6 +9,7 @@ >> #include <stdint.h> >> #include <stdio.h> >> #include <stdarg.h> >> +#include <stdbool.h> >> #include <rte_common.h> >> #include <rte_debug.h> >> #include <rte_cycles.h> >> @@ -82,9 +83,6 @@ typedef int16_t s16; >> typedef uint32_t u32; >> typedef int32_t s32; >> typedef uint64_t u64; >> -#ifndef __cplusplus >> -typedef int bool; >> -#endif >> >> #define mb() rte_mb() >> #define wmb() rte_wmb() >> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c >> b/drivers/net/ixgbe/ixgbe_ethdev.c >> index 7eb3d0567b58..2c5d2e5f9295 100644 >> --- a/drivers/net/ixgbe/ixgbe_ethdev.c >> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c >> @@ -2589,7 +2589,8 @@ ixgbe_dev_start(struct rte_eth_dev *dev) >> struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); >> struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; >> uint32_t intr_vector = 0; >> - int err, link_up = 0, negotiate = 0; >> + int err; >> + bool link_up = 0, negotiate = 0; >> uint32_t speed = 0; >> uint32_t allowed_speeds = 0; >> int mask = 0; >> @@ -3958,7 +3959,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev, >> >> static int >> ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed, >> - int *link_up, int wait_to_complete) >> + bool *link_up, int wait_to_complete) >> { >> struct ixgbe_adapter *adapter = container_of(hw, >> struct ixgbe_adapter, hw); >> @@ -4089,7 +4090,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, >> ixgbe_link_speed link_speed = IXGBE_LINK_SPEED_UNKNOWN; >> struct ixgbe_interrupt *intr = >> IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private); >> - int link_up; >> + bool link_up; >> int diag; >> int wait = 1; >> >> -- >> 2.17.1 >>