summaryrefslogtreecommitdiff
path: root/components/cplusplus/cpp11
diff options
context:
space:
mode:
authorSherman <[email protected]>2021-11-04 13:59:22 +0800
committerSherman <[email protected]>2021-11-04 13:59:22 +0800
commit6e004d4b12993a1206c6ff0168bd602bd71e9e9b (patch)
tree4ad5048005defe9d48c3969e875066a3ec8a9ec0 /components/cplusplus/cpp11
parent85934d95e6ac046ed81fc763769c60c48a42c4cb (diff)
parent3f3418d173e5a5d3a5b9cea27da1987491bf9e6a (diff)
Merge branch 'master' of github.com:RT-Thread/rt-thread
Diffstat (limited to 'components/cplusplus/cpp11')
-rw-r--r--components/cplusplus/cpp11/armclang/thread.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/components/cplusplus/cpp11/armclang/thread.cpp b/components/cplusplus/cpp11/armclang/thread.cpp
index f7f0cb4077..46306eceb8 100644
--- a/components/cplusplus/cpp11/armclang/thread.cpp
+++ b/components/cplusplus/cpp11/armclang/thread.cpp
@@ -73,7 +73,19 @@ extern "C" void __ARM_TPL_thread_yield()
extern "C" int __ARM_TPL_thread_nanosleep(const __ARM_TPL_timespec_t *__req,
__ARM_TPL_timespec_t *__rem)
{
- return nanosleep(__req, rem);
+ rt_tick_t tick;
+
+ tick = __req->tv_sec * RT_TICK_PER_SECOND + (__req->tv_nsec * RT_TICK_PER_SECOND)/ 1000000000;
+ rt_thread_delay(tick);
+
+ if (__rem)
+ {
+ tick = rt_tick_get() - tick;
+ /* get the passed time */
+ __rem->tv_sec = tick/RT_TICK_PER_SECOND;
+ __rem->tv_nsec = (tick%RT_TICK_PER_SECOND) * (1000000000/RT_TICK_PER_SECOND);
+ }
+ return 0;
}
extern "C" unsigned __ARM_TPL_thread_hw_concurrency()