diff options
| -rw-r--r-- | runtime/utils.cc | 4 | ||||
| -rw-r--r-- | runtime/utils_test.cc | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/runtime/utils.cc b/runtime/utils.cc index e18af00694..650214f67b 100644 --- a/runtime/utils.cc +++ b/runtime/utils.cc @@ -262,8 +262,8 @@ uint64_t ThreadCpuNanoTime() { void NanoSleep(uint64_t ns) { timespec tm; - tm.tv_sec = 0; - tm.tv_nsec = ns; + tm.tv_sec = ns / MsToNs(1000); + tm.tv_nsec = ns - static_cast<uint64_t>(tm.tv_sec) * MsToNs(1000); nanosleep(&tm, nullptr); } diff --git a/runtime/utils_test.cc b/runtime/utils_test.cc index 259fe3372e..195de0c121 100644 --- a/runtime/utils_test.cc +++ b/runtime/utils_test.cc @@ -515,4 +515,10 @@ TEST_F(UtilsTest, IsAbsoluteUint) { EXPECT_FALSE(IsAbsoluteUint<32>(UINT_MAX_plus1)); } +TEST_F(UtilsTest, TestSleep) { + auto start = NanoTime(); + NanoSleep(MsToNs(1500)); + EXPECT_GT(NanoTime() - start, MsToNs(1000)); +} + } // namespace art |