cmsis_rtthread.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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_list_entry(node, struct rt_thread, tlist)
  23. #define THREAD_NAME(thread_cb) thread_cb->thread.parent.name
  24. #define RT_WEAK rt_weak
  25. #else /* legacy version macros (<5.0.2) */
  26. #define KERNEL_VERSION (((rt_uint32_t)RT_VERSION * 10000000UL) | \
  27. ((rt_uint32_t)RT_SUBVERSION * 10000UL) | \
  28. ((rt_uint32_t)RT_REVISION * 1UL))
  29. #define thread_rt_list_entry(node, rt_thread) rt_list_entry(node, struct rt_thread, list)
  30. #define THREAD_NAME(thread_cb) thread_cb->thread.name
  31. #endif
  32. typedef struct
  33. {
  34. rt_uint8_t flags;
  35. struct rt_thread thread;
  36. rt_sem_t joinable_sem; ///< semaphore for joinable thread
  37. rt_uint8_t flag_set; ///< thread flag set
  38. rt_uint8_t prio;
  39. }thread_cb_t;
  40. typedef struct
  41. {
  42. rt_uint8_t flags;
  43. struct rt_timer timer;
  44. }timer_cb_t;
  45. #ifdef RT_USING_EVENT
  46. typedef struct
  47. {
  48. rt_uint8_t flags;
  49. struct rt_event event;
  50. }event_cb_t;
  51. #endif
  52. #ifdef RT_USING_MUTEX
  53. typedef struct
  54. {
  55. rt_uint8_t flags;
  56. struct rt_mutex mutex;
  57. }mutex_cb_t;
  58. #endif
  59. #ifdef RT_USING_SEMAPHORE
  60. typedef struct
  61. {
  62. rt_uint8_t flags;
  63. struct rt_semaphore sem;
  64. }sem_cb_t;
  65. #endif
  66. #ifdef RT_USING_MEMPOOL
  67. typedef struct
  68. {
  69. rt_uint8_t flags;
  70. struct rt_mempool mp;
  71. }mempool_cb_t;
  72. #endif
  73. #ifdef RT_USING_MESSAGEQUEUE
  74. typedef struct
  75. {
  76. rt_uint32_t init_msg_size;
  77. rt_uint8_t flags;
  78. struct rt_messagequeue mq;
  79. }mq_cb_t;
  80. #endif
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif