service: fix shifts to operate on 64-bit integers
authorHarry van Haaren <harry.van.haaren@intel.com>
Mon, 31 Jul 2017 16:38:55 +0000 (17:38 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 31 Jul 2017 20:36:09 +0000 (22:36 +0200)
commitf46358207e1598a903822ea369d413af59d8a7f7
tree93b4038f9a1e6643ac2526765e9fac0bc6a4b9f4
parent7429ce44a163390a9f54a392d3b88a0894513966
service: fix shifts to operate on 64-bit integers

This commit fixes shifts to an integer (1 << shift) which
is assumed to be a 32-bit integer. In this case, the shift is
variable and expected to be valid for 64-bit integers. Given that
the expectation to work with 64 bits exists, we must ensure that
the (1 << shift) one in that formula is actually a uin64_t.

The UINT64_C() macro portably adds the correct suffix to a constant,
informing the compiler that the value is to be assigned 64 bits.

The issue would only manifests when there were greater than 31
services registered.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
lib/librte_eal/common/rte_service.c