Added implementation for CPU cycle diff, max and resolution.
Signed-off-by: Petri Savolainen <[email protected]>
---
platform/linux-generic/Makefile.am | 1 +
platform/linux-generic/arch/linux/odp_cpu_cycles.c | 10 ++++++++++
platform/linux-generic/arch/mips64/odp_cpu_cycles.c | 10 ++++++++++
platform/linux-generic/arch/x86/odp_cpu_cycles.c | 10 ++++++++++
platform/linux-generic/odp_cpu.c | 16 ++++++++++++++++
5 files changed, 47 insertions(+)
create mode 100644 platform/linux-generic/odp_cpu.c
diff --git a/platform/linux-generic/Makefile.am
b/platform/linux-generic/Makefile.am
index c2a4778..43f8de8 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -139,6 +139,7 @@ __LIB__libodp_la_SOURCES = \
odp_barrier.c \
odp_buffer.c \
odp_classification.c \
+ odp_cpu.c \
odp_cpumask.c \
odp_cpumask_task.c \
odp_crypto.c \
diff --git a/platform/linux-generic/arch/linux/odp_cpu_cycles.c
b/platform/linux-generic/arch/linux/odp_cpu_cycles.c
index c312f3d..37a4d94 100644
--- a/platform/linux-generic/arch/linux/odp_cpu_cycles.c
+++ b/platform/linux-generic/arch/linux/odp_cpu_cycles.c
@@ -36,3 +36,13 @@ uint64_t odp_cpu_cycles(void)
return cycles;
}
+
+uint64_t odp_cpu_cycles_max(void)
+{
+ return UINT64_MAX;
+}
+
+uint64_t odp_cpu_cycles_resolution(void)
+{
+ return 1;
+}
diff --git a/platform/linux-generic/arch/mips64/odp_cpu_cycles.c
b/platform/linux-generic/arch/mips64/odp_cpu_cycles.c
index acd7058..a20a313 100644
--- a/platform/linux-generic/arch/mips64/odp_cpu_cycles.c
+++ b/platform/linux-generic/arch/mips64/odp_cpu_cycles.c
@@ -19,3 +19,13 @@ uint64_t odp_cpu_cycles(void)
return cycle;
}
+
+uint64_t odp_cpu_cycles_max(void)
+{
+ return UINT64_MAX;
+}
+
+uint64_t odp_cpu_cycles_resolution(void)
+{
+ return 1;
+}
diff --git a/platform/linux-generic/arch/x86/odp_cpu_cycles.c
b/platform/linux-generic/arch/x86/odp_cpu_cycles.c
index 20ad44a..1c5c0ec 100644
--- a/platform/linux-generic/arch/x86/odp_cpu_cycles.c
+++ b/platform/linux-generic/arch/x86/odp_cpu_cycles.c
@@ -21,3 +21,13 @@ uint64_t odp_cpu_cycles(void)
return tsc.tsc_64;
}
+
+uint64_t odp_cpu_cycles_max(void)
+{
+ return UINT64_MAX;
+}
+
+uint64_t odp_cpu_cycles_resolution(void)
+{
+ return 1;
+}
diff --git a/platform/linux-generic/odp_cpu.c b/platform/linux-generic/odp_cpu.c
new file mode 100644
index 0000000..bcda466
--- /dev/null
+++ b/platform/linux-generic/odp_cpu.c
@@ -0,0 +1,16 @@
+/* Copyright (c) 2015, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp/cpu.h>
+#include <odp/hints.h>
+
+uint64_t odp_cpu_cycles_diff(uint64_t c1, uint64_t c2)
+{
+ if (odp_likely(c2 > c1))
+ return c2 - c1;
+
+ return c2 + (odp_cpu_cycles_max() - c1);
+}
--
2.5.1
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp