From 8b5ab0e4dd70f449db52503f89cbb3767ccec38c Mon Sep 17 00:00:00 2001 From: maratek Date: Fri, 23 Aug 2019 15:25:56 -0700 Subject: Fix get_random_seed on Native Client Newlib in Native Client SDK does not provide ::random function. Implement get_random_seed for NaCl using ::rand, similarly to Windows version. --- unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h b/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h index 2be4f9cc5..445248163 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h @@ -45,6 +45,14 @@ EIGEN_DEVICE_FUNC uint64_t get_random_seed() { uint64_t rnd = ::random() ^ mach_absolute_time(); return rnd; +#elif defined __native_client__ + // Same approach as for win32, except using clock_gettime + timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + int rnd1 = ::rand(); + int rnd2 = ::rand(); + uint64_t rnd = (rnd1 | rnd2 << 16) ^ ts.tv_nsec; + return rnd; #else // Augment the current time with pseudo random number generation -- cgit v1.2.3