提交 36f4861c 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

uspinlock.h

上级 214c3dcc
#pragma once #pragma once
#include "x86.h" #include "amd64.h"
struct uspinlock { struct uspinlock {
volatile uint locked; // Is the lock held? volatile u32 locked; // Is the lock held?
}; };
static void inline __attribute__((always_inline)) static void inline __attribute__((always_inline))
acquire(struct uspinlock *lk) acquire(struct uspinlock *lk)
{ {
while(xchg(&lk->locked, 1) != 0) while(xchg32(&lk->locked, 1) != 0)
; ;
} }
static void inline __attribute__((always_inline)) static void inline __attribute__((always_inline))
release(struct uspinlock *lk) release(struct uspinlock *lk)
{ {
xchg(&lk->locked, 0); xchg32(&lk->locked, 0);
} }
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论