| From e186ca9ebda181f62504a1922559ef3ddae5e3b6 Mon Sep 17 00:00:00 2001 |
| From: Laurent Charpentier <laurent_pubs@yahoo.com> |
| Date: Mon, 15 Jan 2018 11:24:45 +0100 |
| Subject: [PATCH] get inline functions work with both gnu11 and gnu89 |
| |
| After gcc upgraded to gcc5, and if the codes are compiled without optimization(-O0), and the below error will happen: |
| |
| ./include/lldp_8021qaz.h:237:12: error: inline function 'ieee8021qaz_clif_cmd' declared but never defined [-Werror] |
| inline int ieee8021qaz_clif_cmd(void *data, struct sockaddr_un *from, |
| ^ |
| ./include/lldp_8021qaz.h:222:13: error: inline function 'set_prio_map' declared but never defined [-Werror] |
| inline void set_prio_map(u32 *prio_map, u8 prio, int tc); |
| ^ |
| ./include/lldp_8021qaz.h:221:12: error: inline function 'get_prio_map' declared but never defined [-Werror] |
| inline int get_prio_map(u32 prio_map, int tc); |
| |
| gcc5 defaults to -std=gnu11 instead of -std=gnu89, and it requires that exactly one C source file has the callable copy of the inline function. |
| |
| Signed-off-by: Laurent Charpentier <laurent_pubs@yahoo.com> |
| --- |
| include/lldp_8021qaz.h | 6 ------ |
| lldp_8021qaz.c | 4 ++-- |
| 2 files changed, 2 insertions(+), 8 deletions(-) |
| |
| diff --git a/include/lldp_8021qaz.h b/include/lldp_8021qaz.h |
| index 55353b8..09dee20 100644 |
| --- a/include/lldp_8021qaz.h |
| +++ b/include/lldp_8021qaz.h |
| @@ -218,9 +218,6 @@ int ieee8021qaz_mod_app(struct app_tlv_head *head, int peer, |
| u8 prio, u8 sel, u16 proto, u32 ops); |
| int ieee8021qaz_app_sethw(char *ifname, struct app_tlv_head *head); |
| |
| -inline int get_prio_map(u32 prio_map, int tc); |
| -inline void set_prio_map(u32 *prio_map, u8 prio, int tc); |
| - |
| struct ieee8021qaz_tlvs *ieee8021qaz_data(const char *); |
| |
| int ieee8021qaz_tlvs_rxed(const char *ifname); |
| @@ -234,9 +231,6 @@ int ieee8021qaz_rchange(struct port *port, struct lldp_agent *, |
| void ieee8021qaz_ifup(char *ifname, struct lldp_agent *); |
| void ieee8021qaz_ifdown(char *ifname, struct lldp_agent *); |
| u8 ieee8021qaz_mibDeleteObject(struct port *port, struct lldp_agent *); |
| -inline int ieee8021qaz_clif_cmd(void *data, struct sockaddr_un *from, |
| - socklen_t fromlen, char *ibuf, int ilen, |
| - char *rbuf); |
| int ieee8021qaz_check_operstate(void); |
| int get_dcbx_hw(const char *ifname, __u8 *dcbx); |
| |
| diff --git a/lldp_8021qaz.c b/lldp_8021qaz.c |
| index 094676d..f154317 100644 |
| --- a/lldp_8021qaz.c |
| +++ b/lldp_8021qaz.c |
| @@ -396,7 +396,7 @@ static int read_cfg_file(char *ifname, struct lldp_agent *agent, |
| return 0; |
| } |
| |
| -inline int get_prio_map(u32 prio_map, int prio) |
| +static inline int get_prio_map(u32 prio_map, int prio) |
| { |
| if (prio > 7) |
| return 0; |
| @@ -404,7 +404,7 @@ inline int get_prio_map(u32 prio_map, int prio) |
| return (prio_map >> (4 * (7-prio))) & 0xF; |
| } |
| |
| -inline void set_prio_map(u32 *prio_map, u8 prio, int tc) |
| +static inline void set_prio_map(u32 *prio_map, u8 prio, int tc) |
| { |
| u32 mask = ~(0xffffffff & (0xF << (4 * (7-prio)))); |
| *prio_map &= mask; |
| -- |
| 2.14.3 |
| |