cmsis_rtthread.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-04-12 misonyo the first version
  9. */
  10. #ifndef __RTTHREAD_OS2_H__
  11. #define __RTTHREAD_OS2_H__
  12. #include <rtthread.h>
  13. #include <cmsis_os2.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. ///< RT-Thread Kernel version
  18. #if defined(RT_VERSION_CHECK) && (RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 0, 2))
  19. #define KERNEL_VERSION (((rt_uint32_t)RT_VERSION_MAJOR * 10000000UL) | \
  20. ((rt_uint32_t)RT_VERSION_MINOR * 10000UL) | \
  21. ((rt_uint32_t)RT_VERSION_PATCH * 1UL))
  22. #define thread_rt_list_entry(node, rt_thread) RT_THREAD_LIST_NODE_ENTRY(node)
  23. #define THREAD_NAME(thread_cb) thread_cb->thread.parent.name
  24. #define RT_WEAK rt_weak
  25. #if(RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 2, 0))
  26. #define CMSIS_RT_SCHED_CTX(thread) RT_SCHED_CTX(&thread)
  27. #else
  28. #define CMSIS_RT_SCHED_CTX(thread) (thread)
  29. #endif /* RTTHREAD_VERSION >= RT_VERSION_CHECK(5, 2, 0) */
  30. #else /* legacy version macros (<5.0.2) */
  31. #define KERNEL_VERSION (((rt_uint32_t)RT_VERSION * 10000000UL) | \
  32. ((rt_uint32_t)RT_SUBVERSION * 10000UL) | \
  33. ((rt_uint32_t)RT_REVISION * 1UL))
  34. #define thread_rt_list_entry(node, rt_thread) rt_list_entry(node, struct rt_thread, list)
  35. #define THREAD_NAME(thread_cb) thread_cb->thread.name
  36. #define CMSIS_RT_SCHED_CTX(thread) (thread)
  37. #endif /* RT_VERSION_CHECK */
  38. typedef struct
  39. {
  40. rt_uint32_t flags;
  41. struct rt_thread thread;
  42. rt_sem_t joinable_sem; ///< semaphore for joinable thread
  43. rt_uint32_t flag_set; ///< thread flag set
  44. rt_uint8_t prio;
  45. }thread_cb_t;
  46. typedef struct
  47. {
  48. rt_uint8_t flags;
  49. struct rt_timer timer;
  50. }timer_cb_t;
  51. #ifdef RT_USING_EVENT
  52. typedef struct
  53. {
  54. rt_uint8_t flags;
  55. struct rt_event event;
  56. }event_cb_t;
  57. #endif
  58. #ifdef RT_USING_MUTEX
  59. typedef struct
  60. {
  61. rt_uint8_t flags;
  62. struct rt_mutex mutex;
  63. }mutex_cb_t;
  64. #endif
  65. #ifdef RT_USING_SEMAPHORE
  66. typedef struct
  67. {
  68. rt_uint8_t flags;
  69. struct rt_semaphore sem;
  70. }sem_cb_t;
  71. #endif
  72. #ifdef RT_USING_MEMPOOL
  73. typedef struct
  74. {
  75. rt_uint8_t flags;
  76. struct rt_mempool mp;
  77. }mempool_cb_t;
  78. #endif
  79. #ifdef RT_USING_MESSAGEQUEUE
  80. typedef struct
  81. {
  82. rt_uint32_t init_msg_size;
  83. rt_uint8_t flags;
  84. struct rt_messagequeue mq;
  85. }mq_cb_t;
  86. #endif
  87. #ifdef __cplusplus
  88. }
  89. #endif
  90. #endif