examples/performance-thread: fix compilation on Suse 11 SP2
Fixes following compilation error, using uint64_t type,
instead of int128_t unnecessarily:
In file included from ./common/lthread.c:82:0:
./common/lthread_timer.h: In function ‘_ns_to_clks’:
./common/lthread_timer.h:49:20: error: expected ‘=’, ‘,’, ‘;’,
‘asm’ or ‘__attribute__’ before ‘clkns’
compilation terminated due to -Wfatal-errors.
Fixes: 116819b9ed
("examples/performance-thread: add lthread subsystem")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
parent
9aba2a3f3d
commit
1e6d5a9608
@ -46,11 +46,22 @@ extern "C" {
|
||||
static inline uint64_t
|
||||
_ns_to_clks(uint64_t ns)
|
||||
{
|
||||
unsigned __int128 clkns = rte_get_tsc_hz();
|
||||
/*
|
||||
* clkns needs to be divided by 1E9 to get ns clocks. However,
|
||||
* dividing by this first would lose a lot of accuracy.
|
||||
* Dividing after a multiply by ns, could cause overflow of
|
||||
* uint64_t if ns is about 5 seconds [if we assume a max tsc
|
||||
* rate of 4GHz]. Therefore we first divide by 1E4, then
|
||||
* multiply and finally divide by 1E5. This allows ns to be
|
||||
* values many hours long, without overflow, while still keeping
|
||||
* reasonable accuracy.
|
||||
*/
|
||||
uint64_t clkns = rte_get_tsc_hz() / 1e4;
|
||||
|
||||
clkns *= ns;
|
||||
clkns /= 1000000000;
|
||||
return (uint64_t) clkns;
|
||||
clkns /= 1e5;
|
||||
|
||||
return clkns;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user