XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
spinlock.h
浏览该文件的文档.
1
13#ifndef __xwos_osal_lock_spinlock_h__
14#define __xwos_osal_lock_spinlock_h__
15
16#include <xwos/standard.h>
18#include <xwos/osal/irq.h>
19
69struct xwos_splk {
70 xwosdl_splk_t osspl;
71};
72
76#define XWOS_SPLK_INITIALIZER { .osspl = XWOSDL_SPLK_INITIALIZER, }
77
85void xwos_splk_init(struct xwos_splk * spl)
86{
87 xwosdl_splk_init(&spl->osspl);
88}
89
99void xwos_splk_lock(struct xwos_splk * spl)
100{
101 xwosdl_splk_lock(&spl->osspl);
102}
103
118{
119 return xwosdl_splk_trylock(&spl->osspl);
120}
121
129void xwos_splk_unlock(struct xwos_splk * spl)
130{
131 xwosdl_splk_unlock(&spl->osspl);
132}
133
144{
145 xwosdl_splk_lock_cpuirq(&spl->osspl);
146}
147
162{
163 return xwosdl_splk_trylock_cpuirq(&spl->osspl);
164}
165
174{
175 xwosdl_splk_unlock_cpuirq(&spl->osspl);
176}
177
188void xwos_splk_lock_cpuirqsv(struct xwos_splk * spl, xwreg_t * cpuirq)
189{
190 xwosdl_splk_lock_cpuirqsv(&spl->osspl, cpuirq);
191}
192
208{
209 return xwosdl_splk_trylock_cpuirqsv(&spl->osspl, cpuirq);
210}
211
221{
222 xwosdl_splk_unlock_cpuirqrs(&spl->osspl, cpuirq);
223}
224
238 const xwirq_t irqs[],
239 xwsz_t num)
240{
241 xwosdl_splk_lock_irqs(&spl->osspl, irqs, num);
242}
243
261 const xwirq_t irqs[],
262 xwsz_t num)
263{
264 return xwosdl_splk_trylock_irqs(&spl->osspl, irqs, num);
265}
266
277 const xwirq_t irqs[],
278 xwsz_t num)
279{
280 xwosdl_splk_unlock_irqs(&spl->osspl, irqs, num);
281}
282
297 const xwirq_t irqs[],
298 xwreg_t flags[], xwsz_t num)
299{
300 xwosdl_splk_lock_irqssv(&spl->osspl, irqs, flags, num);
301}
302
321 const xwirq_t irqs[],
322 xwreg_t flags[], xwsz_t num)
323{
324 return xwosdl_splk_trylock_irqssv(&spl->osspl, irqs, flags, num);
325}
326
338 const xwirq_t irqs[],
339 xwreg_t flags[], xwsz_t num)
340{
341 xwosdl_splk_unlock_irqsrs(&spl->osspl, irqs, flags, num);
342}
343
354void xwos_splk_lock_bh(struct xwos_splk * spl)
355{
356 xwosdl_splk_lock_bh(&spl->osspl);
357}
358
374{
375 return xwosdl_splk_trylock_bh(&spl->osspl);
376}
377
386{
387 xwosdl_splk_unlock_bh(&spl->osspl);
388}
389
394#endif /* xwos/osal/lock/spinlock.h */
#define __xwos_inline_api
Definition compiler.h:179
signed long xwer_t
Definition type.h:554
signed int xwirq_t
Definition type.h:517
unsigned long xwsz_t
Definition type.h:339
xwptr_t xwreg_t
Definition type.h:409
static void xwos_splk_lock_irqs(struct xwos_splk *spl, const xwirq_t irqs[], xwsz_t num)
XWOS API:上锁自旋锁,并关闭部分中断
Definition spinlock.h:237
static void xwos_splk_unlock_irqsrs(struct xwos_splk *spl, const xwirq_t irqs[], xwreg_t flags[], xwsz_t num)
XWOS API:解锁自旋锁,并恢复部分中断的中断标志
Definition spinlock.h:337
static void xwos_splk_lock_cpuirq(struct xwos_splk *spl)
XWOS API:上锁自旋锁,并关闭本地CPU的中断
Definition spinlock.h:143
static void xwos_splk_lock_bh(struct xwos_splk *spl)
XWOS API:上锁自旋锁,关闭本地CPU的中断底半部
Definition spinlock.h:354
static xwer_t xwos_splk_trylock_cpuirq(struct xwos_splk *spl)
XWOS API:尝试上锁自旋锁,并关闭本地CPU的中断
Definition spinlock.h:161
static xwer_t xwos_splk_trylock_bh(struct xwos_splk *spl)
XWOS API:尝试上锁自旋锁,关闭本地CPU的中断底半部
Definition spinlock.h:373
static xwer_t xwos_splk_trylock_cpuirqsv(struct xwos_splk *spl, xwreg_t *cpuirq)
XWOS API:尝试上锁自旋锁,保存本地CPU的中断标志并关闭
Definition spinlock.h:207
static void xwos_splk_unlock(struct xwos_splk *spl)
XWOS API:解锁自旋锁
Definition spinlock.h:129
static void xwos_splk_lock(struct xwos_splk *spl)
XWOS API:上锁自旋锁,若自旋锁已开启临界区,就自旋等待
Definition spinlock.h:99
static void xwos_splk_unlock_irqs(struct xwos_splk *spl, const xwirq_t irqs[], xwsz_t num)
XWOS API:解锁自旋锁,并开启部分中断
Definition spinlock.h:276
static void xwos_splk_unlock_cpuirqrs(struct xwos_splk *spl, xwreg_t cpuirq)
XWOS API:解锁自旋锁,并恢复本地CPU的中断标志
Definition spinlock.h:220
static xwer_t xwos_splk_trylock_irqs(struct xwos_splk *spl, const xwirq_t irqs[], xwsz_t num)
XWOS API:尝试上锁自旋锁,并关闭部分中断
Definition spinlock.h:260
static void xwos_splk_unlock_cpuirq(struct xwos_splk *spl)
XWOS API:解锁自旋锁,并开启本地CPU的中断
Definition spinlock.h:173
static void xwos_splk_init(struct xwos_splk *spl)
XWOS API:初始化自旋锁
Definition spinlock.h:85
static xwer_t xwos_splk_trylock_irqssv(struct xwos_splk *spl, const xwirq_t irqs[], xwreg_t flags[], xwsz_t num)
XWOS API:尝试上锁自旋锁,保存部分中断的中断标志并关闭
Definition spinlock.h:320
static void xwos_splk_lock_cpuirqsv(struct xwos_splk *spl, xwreg_t *cpuirq)
XWOS API:上锁自旋锁,保存本地CPU的中断标志并关闭
Definition spinlock.h:188
static xwer_t xwos_splk_trylock(struct xwos_splk *spl)
XWOS API:尝试上锁自旋锁
Definition spinlock.h:117
static void xwos_splk_lock_irqssv(struct xwos_splk *spl, const xwirq_t irqs[], xwreg_t flags[], xwsz_t num)
XWOS API:上锁自旋锁,保存部分中断的中断标志并关闭
Definition spinlock.h:296
static void xwos_splk_unlock_bh(struct xwos_splk *spl)
XWOS API:解锁自旋锁,开启本地CPU的中断底半部
Definition spinlock.h:385
操作系统抽象层:异常与中断
操作系统抽象层:自旋锁接口描述
XWOS API:自旋锁
Definition spinlock.h:69
xwosdl_splk_t osspl
Definition spinlock.h:70
XWOS的标准头文件