自旋锁
XWOS的自旋锁
少于1分钟
临界区是指访问共用资源的程序片段,传统RTOS中,通常使用以下几种方式保护临界区资源:
XWOS内核是假定系统为MP来设计的(UP可以视为MP的特例), 因此在进入临界区的方式与传统RTOS有些区别:
lock
与unlock
形式的API;lock_cpuirq
与unlock_cpuirq
形式的API。
若对临界区的访问需要获取多个自旋锁或其派生锁,应该使用lock_cpuirqsv
与unlock_cpuirqrs
形式的API来保存与恢复CPU总中断开关标志,防止内层锁解锁时意外地把CPU总中断打开;lock_irqs
与unlock_irqs
形式的API,
若对临界区的访问需要获取多个自旋锁或其派生锁,应该使用lock_irqssv
与unlock_irqsrs
形式的API来保存与恢复部分中断开关标志,防止内层锁解锁时意外地把这些中断打开;lock_bh
与unlock_bh
形式的API;xwos/lib/xwaop.h
,并抽象了std:atomic类似的内存模型。