summaryrefslogtreecommitdiff
path: root/include/rtthread.h
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-09-28 11:56:03 +0800
committerBernard Xiong <[email protected]>2019-09-28 11:56:03 +0800
commit5cd65092967a1dbaa35bb7fdd80cf3a0e2f9cc9f (patch)
tree0a749580fd15aa4715a17db1d4b7315f00fcf0a0 /include/rtthread.h
parentcb07e5fb24afebdf233847da551d3ede80727345 (diff)
[Kernel] cleanup code of spinlock in SMP 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