diff mbox

[dpdk-dev,v3,06/24] /lib/librte_eal: stage cast from uint64 to long

Message ID 152609035240.121661.17896359108855967217.stgit@localhost.localdomain (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers show

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Andy Green May 12, 2018, 1:59 a.m. UTC
/projects/lagopus/src/dpdk/build/include/rte_random.h:
In function 'rte_srand':
/projects/lagopus/src/dpdk/build/include/rte_random.h:34:10:
warning: conversion to 'long int' from 'long unsigned int'
may change the sign of the result [-Wsign-conversion]
  srand48((long unsigned int)seedval);

/projects/lagopus/src/dpdk/build/include/rte_random.h:51:8:
warning: conversion to 'uint64_t' {aka 'long unsigned int'}
from 'long int' may change the sign of the result
[-Wsign-conversion]
  val = lrand48();
        ^~~~~~~
/projects/lagopus/src/dpdk/build/include/rte_random.h:53:6:
warning: conversion to 'long unsigned int' from 'long int'
may change the sign of the result [-Wsign-conversion]
  val += lrand48();

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_eal/common/include/rte_random.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Thomas Monjalon May 13, 2018, 4:24 p.m. UTC | #1
12/05/2018 03:59, Andy Green:
> warning: conversion to 'uint64_t' {aka 'long unsigned int'}
> from 'long int' may change the sign of the result
> [-Wsign-conversion]
>   val = lrand48();
>         ^~~~~~~
[...]
>  rte_rand(void)
>  {
>  	uint64_t val;
> -	val = lrand48();
> +	val = (unsigned long)lrand48();

I think the right cast is uint64_t.
It makes a difference in 32-bit environment.
Andy Green May 13, 2018, 11:17 p.m. UTC | #2
On 05/14/2018 12:24 AM, Thomas Monjalon wrote:
> 12/05/2018 03:59, Andy Green:
>> warning: conversion to 'uint64_t' {aka 'long unsigned int'}
>> from 'long int' may change the sign of the result
>> [-Wsign-conversion]
>>    val = lrand48();
>>          ^~~~~~~
> [...]
>>   rte_rand(void)
>>   {
>>   	uint64_t val;
>> -	val = lrand48();
>> +	val = (unsigned long)lrand48();
> 
> I think the right cast is uint64_t.
> It makes a difference in 32-bit environment.

Yes, you are right thanks.  I changed it accordingly.

-Andy

> 
>
diff mbox

Patch

diff --git a/lib/librte_eal/common/include/rte_random.h b/lib/librte_eal/common/include/rte_random.h
index 63bb28088..96c64fdd2 100644
--- a/lib/librte_eal/common/include/rte_random.h
+++ b/lib/librte_eal/common/include/rte_random.h
@@ -31,7 +31,7 @@  extern "C" {
 static inline void
 rte_srand(uint64_t seedval)
 {
-	srand48((long unsigned int)seedval);
+	srand48((long)(unsigned long)seedval);
 }
 
 /**
@@ -48,9 +48,9 @@  static inline uint64_t
 rte_rand(void)
 {
 	uint64_t val;
-	val = lrand48();
+	val = (unsigned long)lrand48();
 	val <<= 32;
-	val += lrand48();
+	val += (unsigned long)lrand48();
 	return val;
 }