blob: 2979b73d2f413c0b2ccb906799ef918c45929f2c [file] [log] [blame]
Patrick Williams03514f12024-04-05 07:04:11 -05001From 2ebc0ff33e41d23e4d3aec1a86f3d8bd4be410e7 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 21 Mar 2024 14:14:58 +0800
4Subject: [PATCH] Implement timer implementation for mips platform
5
6Upstream-Status: Pending
7
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9---
10 .../lock/range/range_tree/lib/portability/toku_time.h | 6 ++++++
11 1 file changed, 6 insertions(+)
12
13diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
14index 0a7488c397..ad7d9f2124 100644
15--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
16+++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
17@@ -162,6 +162,12 @@ static inline tokutime_t toku_time_now(void) {
18 unsigned long result;
19 asm volatile ("rdtime.d\t%0,$r0" : "=r" (result));
20 return result;
21+#elif defined(__mips__)
22+ // mips apparently only allows rdtsc for superusers, so we fall
23+ // back to gettimeofday. It's possible clock_gettime would be better.
24+ struct timeval tv;
25+ gettimeofday(&tv, nullptr);
26+ return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
27 #else
28 #error No timer implementation for this platform
29 #endif
30--
312.25.1
32