[dpdk-dev] eal: fix Wbad-function-cast warning

Message ID 1426510564-19164-1-git-send-email-john.mcnamara@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

John McNamara March 16, 2015, 12:56 p.m. UTC
  Fix a warning when the rte_common.h header is included in a compilation
using  -Wbad-function-cast, such as in Open vSwitch where the
following warning is emitted repeatedly:

    ../rte_common.h: In function 'rte_is_aligned':
    ../rte_common.h:184:9: warning: cast from function call of
    type 'uintptr_t' to non-matching type 'void *' [-Wbad-function-cast]

This change fixes the issue in rte_common.h by using the RTE_ALIGN_FLOOR
macro to get the aligned floor value with generic type casting.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 lib/librte_eal/common/include/rte_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Neil Horman March 16, 2015, 1:19 p.m. UTC | #1
On Mon, Mar 16, 2015 at 12:56:04PM +0000, John McNamara wrote:
> Fix a warning when the rte_common.h header is included in a compilation
> using  -Wbad-function-cast, such as in Open vSwitch where the
> following warning is emitted repeatedly:
> 
>     ../rte_common.h: In function 'rte_is_aligned':
>     ../rte_common.h:184:9: warning: cast from function call of
>     type 'uintptr_t' to non-matching type 'void *' [-Wbad-function-cast]
> 
> This change fixes the issue in rte_common.h by using the RTE_ALIGN_FLOOR
> macro to get the aligned floor value with generic type casting.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  lib/librte_eal/common/include/rte_common.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
> index 4971049..86b7e9b 100644
> --- a/lib/librte_eal/common/include/rte_common.h
> +++ b/lib/librte_eal/common/include/rte_common.h
> @@ -120,7 +120,7 @@ rte_align_floor_int(uintptr_t ptr, uintptr_t align)
>   * must be a power-of-two value.
>   */
>  #define RTE_PTR_ALIGN_FLOOR(ptr, align) \
> -	(typeof(ptr))rte_align_floor_int((uintptr_t)ptr, align)
> +	(typeof(ptr))RTE_ALIGN_FLOOR((uintptr_t)ptr, align)
>  
>  /**
>   * Macro to align a value to a given power-of-two. The resultant value
> -- 
> 1.8.1.4
> 
> 

This looks reasonable, but it rather begs the question as to why we need
rte_align_floor_int in the first place.  Theres only one other call site, and it
looks like it could use RTE_PTR_ALIGN_FLOOR just as easily.  What about fixing
up the second call site and removing the function to save some space?

Best
Neil
  
John McNamara March 16, 2015, 3:04 p.m. UTC | #2
> -----Original Message-----
> From: Neil Horman [mailto:nhorman@tuxdriver.com]
> Sent: Monday, March 16, 2015 1:19 PM
> To: Mcnamara, John
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] eal: fix Wbad-function-cast warning
> 
> 
> This looks reasonable, but it rather begs the question as to why we need
> rte_align_floor_int in the first place.  Theres only one other call site,
> and it looks like it could use RTE_PTR_ALIGN_FLOOR just as easily.  What
> about fixing up the second call site and removing the function to save
> some space?

Hi Neil,

Seems like a good idea. I'll submit a v2.

Does rte_align_floor_int() need to be deprecated in some way or is it okay to just remove it?

John
  
Neil Horman March 16, 2015, 3:45 p.m. UTC | #3
On Mon, Mar 16, 2015 at 03:04:45PM +0000, Mcnamara, John wrote:
> > -----Original Message-----
> > From: Neil Horman [mailto:nhorman@tuxdriver.com]
> > Sent: Monday, March 16, 2015 1:19 PM
> > To: Mcnamara, John
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] eal: fix Wbad-function-cast warning
> > 
> > 
> > This looks reasonable, but it rather begs the question as to why we need
> > rte_align_floor_int in the first place.  Theres only one other call site,
> > and it looks like it could use RTE_PTR_ALIGN_FLOOR just as easily.  What
> > about fixing up the second call site and removing the function to save
> > some space?
> 
> Hi Neil,
> 
> Seems like a good idea. I'll submit a v2.
> 
> Does rte_align_floor_int() need to be deprecated in some way or is it okay to just remove it?
> 
> John
> 
After the 2.0 release you should put a note in the api document, yes, but right
now its not required.  Though if you wanted to, I wouldn't stop you :)
Neil
  

Patch

diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
index 4971049..86b7e9b 100644
--- a/lib/librte_eal/common/include/rte_common.h
+++ b/lib/librte_eal/common/include/rte_common.h
@@ -120,7 +120,7 @@  rte_align_floor_int(uintptr_t ptr, uintptr_t align)
  * must be a power-of-two value.
  */
 #define RTE_PTR_ALIGN_FLOOR(ptr, align) \
-	(typeof(ptr))rte_align_floor_int((uintptr_t)ptr, align)
+	(typeof(ptr))RTE_ALIGN_FLOOR((uintptr_t)ptr, align)
 
 /**
  * Macro to align a value to a given power-of-two. The resultant value