diff --git a/src/msg/async/dpdk/dpdk_rte.cc b/src/msg/async/dpdk/dpdk_rte.cc index 3e577d0aed6..4c1cf9f0237 100644 --- a/src/msg/async/dpdk/dpdk_rte.cc +++ b/src/msg/async/dpdk/dpdk_rte.cc @@ -40,7 +40,7 @@ namespace dpdk { std::condition_variable eal::cond; std::list> eal::funcs; - static int bitcount(unsigned n) + static int bitcount(unsigned long long n) { return std::bitset{n}.count(); } @@ -52,8 +52,8 @@ namespace dpdk { } bool done = false; - const char *hexstring = c->_conf->get_val("ms_dpdk_coremask").c_str(); - int num = (int)strtol(hexstring, NULL, 0); + auto num = std::stoull(c->_conf->get_val("ms_dpdk_coremask"), + nullptr, 16); unsigned int coremaskbit = bitcount(num); ceph_assert(coremaskbit > c->_conf->ms_async_op_threads);