Przeglądaj źródła

feat: 对RTT5.2.2版本的支持

wdfk-prog 1 rok temu
rodzic
commit
614801d685
2 zmienionych plików z 12 dodań i 4 usunięć
  1. 2 2
      cmsis_rtthread.c
  2. 10 2
      cmsis_rtthread.h

+ 2 - 2
cmsis_rtthread.c

@@ -541,7 +541,7 @@ osThreadState_t osThreadGetState(osThreadId_t thread_id)
         return osThreadError;
     }
 
-    switch (thread_cb->thread.stat)
+    switch (CMSIS_RT_SCHED_CTX(thread_cb->thread).stat)
     {
     case RT_THREAD_INIT:
         state = osThreadInactive;
@@ -716,7 +716,7 @@ osStatus_t osThreadDetach(osThreadId_t thread_id)
     }
     */
 
-    if ((thread_cb->thread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_CLOSE)
+    if ((CMSIS_RT_SCHED_CTX(thread_cb->thread).stat & RT_THREAD_STAT_MASK) == RT_THREAD_CLOSE)
     {
         rt_thread_detach(&(thread_cb->thread));
 

+ 10 - 2
cmsis_rtthread.h

@@ -20,20 +20,28 @@ extern "C" {
 
 ///< RT-Thread Kernel version
 #if defined(RT_VERSION_CHECK) && (RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 0, 2))
+
 #define KERNEL_VERSION             (((rt_uint32_t)RT_VERSION_MAJOR * 10000000UL)    | \
                                    ((rt_uint32_t)RT_VERSION_MINOR  *    10000UL)    | \
                                    ((rt_uint32_t)RT_VERSION_PATCH  *        1UL))
-#define thread_rt_list_entry(node, rt_thread)   rt_list_entry(node, struct rt_thread, tlist)
+#define thread_rt_list_entry(node, rt_thread)   RT_THREAD_LIST_NODE_ENTRY(node)
 #define THREAD_NAME(thread_cb)  thread_cb->thread.parent.name
 #define RT_WEAK                 rt_weak
 
+#if(RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 2, 0))
+#define CMSIS_RT_SCHED_CTX(thread) RT_SCHED_CTX(&thread)
+#else
+#define CMSIS_RT_SCHED_CTX(thread) (thread)
+#endif  /* RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 2, 0) */
+
 #else   /* legacy version macros (<5.0.2) */
 #define KERNEL_VERSION             (((rt_uint32_t)RT_VERSION * 10000000UL)   | \
                                    ((rt_uint32_t)RT_SUBVERSION *    10000UL) | \
                                    ((rt_uint32_t)RT_REVISION *        1UL))
 #define thread_rt_list_entry(node, rt_thread)   rt_list_entry(node, struct rt_thread, list)
 #define THREAD_NAME(thread_cb)  thread_cb->thread.name
-#endif
+#define CMSIS_RT_SCHED_CTX(thread) (thread)
+#endif  /* RT_VERSION_CHECK */
 
 typedef struct
 {