Prechádzať zdrojové kódy

Merge pull request #5164 from Guozhanxin/cpp11_armclang

guo 3 rokov pred
rodič
commit
ba5c623139

+ 1 - 1
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

+ 13 - 1
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()