summaryrefslogtreecommitdiff
path: root/include/rtthread.h
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-09-29 09:28:01 +0800
committerGitHub <[email protected]>2019-09-29 09:28:01 +0800
commitc07ebbc9d2c78fbc8c70639bf915949314088d8a (patch)
treefd28c63d1055133d33563f4d146adfc551c6e04b /include/rtthread.h
parent88ad2398e9d2a42da34ed57e2fbc6c53100339f7 (diff)
parent71311b73ae3e6a91ca1e9b2b82ca11af2c5cb868 (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.h21
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