summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorshaojinchun <[email protected]>2019-09-26 18:13:07 +0800
committershaojinchun <[email protected]>2019-09-27 14:38:33 +0800
commitcb07e5fb24afebdf233847da551d3ede80727345 (patch)
treee1885e5a8925aefe3df70577416d4b4ddb698b5f /include
parent676279421feba8832f926a2e96b5e7dc7fdb0652 (diff)
开放spinlock相关函数
Diffstat (limited to 'include')
-rw-r--r--include/rtdef.h1
-rw-r--r--include/rthw.h14
2 files changed, 15 insertions, 0 deletions
diff --git a/include/rtdef.h b/include/rtdef.h
index b25a6a87d5..3dc8a2a2a9 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -577,6 +577,7 @@ struct rt_thread
rt_uint16_t scheduler_lock_nest; /**< scheduler lock count */
rt_uint16_t cpus_lock_nest; /**< cpus lock count */
+ rt_uint16_t critical_lock_nest; /**< critical lock count */
#endif /*RT_USING_SMP*/
/* priority */
diff --git a/include/rthw.h b/include/rthw.h
index ef3dc087ad..a77f2c1e46 100644
--- a/include/rthw.h
+++ b/include/rthw.h
@@ -143,6 +143,12 @@ typedef union {
} tickets;
} rt_hw_spinlock_t;
+typedef struct
+{
+ rt_hw_spinlock_t lock;
+} rt_spinlock_t;
+
+void rt_hw_spin_lock_init(rt_hw_spinlock_t *lock);
void rt_hw_spin_lock(rt_hw_spinlock_t *lock);
void rt_hw_spin_unlock(rt_hw_spinlock_t *lock);
@@ -181,8 +187,16 @@ void rt_hw_secondary_cpu_idle_exec(void);
#define rt_hw_spin_lock(lock) *(lock) = rt_hw_interrupt_disable()
#define rt_hw_spin_unlock(lock) rt_hw_interrupt_enable(*(lock))
+typedef int rt_spinlock_t;
+
#endif
+void rt_spin_lock_init(rt_spinlock_t *lock);
+void rt_spin_lock(rt_spinlock_t *lock);
+void rt_spin_unlock(rt_spinlock_t *lock);
+rt_base_t rt_spin_lock_irqsave(rt_spinlock_t *lock);
+void rt_spin_unlock_irqrestore(rt_spinlock_t *lock, rt_base_t level);
+
#ifdef __cplusplus
}
#endif