diff options
| author | Sherman <[email protected]> | 2021-11-04 13:59:22 +0800 |
|---|---|---|
| committer | Sherman <[email protected]> | 2021-11-04 13:59:22 +0800 |
| commit | 6e004d4b12993a1206c6ff0168bd602bd71e9e9b (patch) | |
| tree | 4ad5048005defe9d48c3969e875066a3ec8a9ec0 /components/cplusplus | |
| parent | 85934d95e6ac046ed81fc763769c60c48a42c4cb (diff) | |
| parent | 3f3418d173e5a5d3a5b9cea27da1987491bf9e6a (diff) | |
Merge branch 'master' of github.com:RT-Thread/rt-thread
Diffstat (limited to 'components/cplusplus')
| -rw-r--r-- | components/cplusplus/Kconfig | 2 | ||||
| -rw-r--r-- | components/cplusplus/cpp11/armclang/thread.cpp | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/components/cplusplus/Kconfig b/components/cplusplus/Kconfig index dfd6786004..dfab433da0 100644 --- a/components/cplusplus/Kconfig +++ b/components/cplusplus/Kconfig @@ -7,7 +7,7 @@ config RT_USING_CPLUSPLUS if RT_USING_CPLUSPLUS config RT_USING_CPLUSPLUS11 - bool "Enable c++11 feature support" + bool "Enable c++11 threading feature support" default n select RT_USING_LIBC select RT_USING_DFS 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() |
