diff options
| author | Bernard Xiong <[email protected]> | 2019-09-28 11:56:03 +0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2019-09-28 11:56:03 +0800 |
| commit | 5cd65092967a1dbaa35bb7fdd80cf3a0e2f9cc9f (patch) | |
| tree | 0a749580fd15aa4715a17db1d4b7315f00fcf0a0 /include/rtthread.h | |
| parent | cb07e5fb24afebdf233847da551d3ede80727345 (diff) | |
[Kernel] cleanup code of spinlock in SMP 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 |
