diff options
| author | Bernard Xiong <[email protected]> | 2019-09-29 09:28:01 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-09-29 09:28:01 +0800 |
| commit | c07ebbc9d2c78fbc8c70639bf915949314088d8a (patch) | |
| tree | fd28c63d1055133d33563f4d146adfc551c6e04b /include/rtthread.h | |
| parent | 88ad2398e9d2a42da34ed57e2fbc6c53100339f7 (diff) | |
| parent | 71311b73ae3e6a91ca1e9b2b82ca11af2c5cb868 (diff) | |
Merge pull request #3111 from BernardXiong/spin_lock
Add spin lock API in Kernel
Diffstat (limited to 'include/rtthread.h')
| -rw-r--r-- | include/rtthread.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/rtthread.h b/include/rtthread.h index d703f36268..13a1a4424b 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -391,6 +391,27 @@ rt_err_t rt_mq_recv(rt_mq_t mq, rt_err_t rt_mq_control(rt_mq_t mq, int cmd, void *arg); #endif +/* + * spinlock + */ +#ifdef RT_USING_SMP +struct rt_spinlock; + +void rt_spin_lock_init(struct rt_spinlock *lock); +void rt_spin_lock(struct rt_spinlock *lock); +void rt_spin_unlock(struct rt_spinlock *lock); +rt_base_t rt_spin_lock_irqsave(struct rt_spinlock *lock); +void rt_spin_unlock_irqrestore(struct rt_spinlock *lock, rt_base_t level); + +#else +#define rt_spin_lock_init(lock) /* nothing */ +#define rt_spin_lock(lock) rt_enter_critical() +#define rt_spin_unlock(lock) rt_exit_critical() +#define rt_spin_lock_irqsave(lock) rt_hw_interrupt_disable() +#define rt_spin_unlock_irqrestore(lock, level) rt_hw_interrupt_enable(level) + +#endif + /**@}*/ #ifdef RT_USING_DEVICE |
