* [dpdk-dev] [PATCH] examples/performance-thread: fix compilation on SuSE 11 SP2
@ 2017-04-24 13:04 Pablo de Lara
2017-04-24 14:01 ` Thomas Monjalon
0 siblings, 1 reply; 2+ messages in thread
From: Pablo de Lara @ 2017-04-24 13:04 UTC (permalink / raw)
To: dev; +Cc: Bruce Richardson, stable
From: Bruce Richardson <bruce.richardson@intel.com>
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: 116819b9ed0d ("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>
---
examples/performance-thread/common/lthread_timer.h | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/examples/performance-thread/common/lthread_timer.h b/examples/performance-thread/common/lthread_timer.h
index b044b90..7c03d67 100644
--- a/examples/performance-thread/common/lthread_timer.h
+++ b/examples/performance-thread/common/lthread_timer.h
@@ -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;
}
--
2.7.4
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dpdk-dev] [PATCH] examples/performance-thread: fix compilation on SuSE 11 SP2
2017-04-24 13:04 [dpdk-dev] [PATCH] examples/performance-thread: fix compilation on SuSE 11 SP2 Pablo de Lara
@ 2017-04-24 14:01 ` Thomas Monjalon
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Monjalon @ 2017-04-24 14:01 UTC (permalink / raw)
To: Pablo de Lara, Bruce Richardson; +Cc: dev, stable
24/04/2017 15:04, Pablo de Lara:
> From: Bruce Richardson <bruce.richardson@intel.com>
>
> 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: 116819b9ed0d ("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>
Applied, thanks
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-04-24 14:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-24 13:04 [dpdk-dev] [PATCH] examples/performance-thread: fix compilation on SuSE 11 SP2 Pablo de Lara
2017-04-24 14:01 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).