diff options
| author | HiFiPhile <[email protected]> | 2025-07-11 15:47:55 +0200 |
|---|---|---|
| committer | HiFiPhile <[email protected]> | 2025-07-11 15:47:55 +0200 |
| commit | f074815405f9c510f3f1eb57f3cbdab40e9e1caa (patch) | |
| tree | 27157de2ae8ef662974a9d87a8119c12f3fbdffb /src/osal/osal_rtthread.h | |
| parent | 69f6b57772ad4f2923dcf48aabaaba044085c4b0 (diff) | |
| parent | 29c2af7651f9075a63a036e94c7bbe3d0d00c31a (diff) | |
Merge branch 'master' into feature/usbtmc_vendor-specific
Diffstat (limited to 'src/osal/osal_rtthread.h')
| -rw-r--r-- | src/osal/osal_rtthread.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/osal/osal_rtthread.h b/src/osal/osal_rtthread.h index c27814835..a778f5425 100644 --- a/src/osal/osal_rtthread.h +++ b/src/osal/osal_rtthread.h @@ -43,6 +43,32 @@ TU_ATTR_ALWAYS_INLINE static inline void osal_task_delay(uint32_t msec) { } //--------------------------------------------------------------------+ +// Spinlock API +//--------------------------------------------------------------------+ +typedef struct rt_spinlock osal_spinlock_t; + +#define OSAL_SPINLOCK_DEF(_name, _int_set) \ + osal_spinlock_t _name + +TU_ATTR_ALWAYS_INLINE static inline void osal_spin_init(osal_spinlock_t *ctx) { + rt_spin_lock_init(ctx); +} + +TU_ATTR_ALWAYS_INLINE static inline void osal_spin_lock(osal_spinlock_t *ctx, bool in_isr) { + if (!TUP_MCU_MULTIPLE_CORE && in_isr) { + return; // single core MCU does not need to lock in ISR + } + rt_spin_lock(ctx); +} + +TU_ATTR_ALWAYS_INLINE static inline void osal_spin_unlock(osal_spinlock_t *ctx, bool in_isr) { + if (!TUP_MCU_MULTIPLE_CORE && in_isr) { + return; // single core MCU does not need to lock in ISR + } + rt_spin_unlock(ctx); +} + +//--------------------------------------------------------------------+ // Semaphore API //--------------------------------------------------------------------+ typedef struct rt_semaphore osal_semaphore_def_t; |
