An error occurred while loading the file. Please try again.
-
nexus authoreda28ae8d4
#ifndef __LOCK_H__
#define __LOCK_H__
#include "common.h"
//自旋锁
typedef struct spinlock {
int locked;//标识锁的状态 0表示未上锁
char* name;//给锁一个名字
int cpuid;//获取该锁的CPU编号
} spinlock_t;
//睡眠锁
typedef struct sleeplock {
spinlock_t lk;
int locked;
char* name;
int pid; //进程号
} sleeplock_t;
void push_off();//关中断
void pop_off();//开中断
void spinlock_init(spinlock_t* lk, char* name);//初始化一个自旋锁
void spinlock_acquire(spinlock_t* lk);//获取指定自旋锁
void spinlock_release(spinlock_t* lk);//释放指定自旋锁
bool spinlock_holding(spinlock_t* lk); //检查当前CPU是否持有指定自旋锁
void sleeplock_init(sleeplock_t* lk, char* name); //逻辑与自旋锁大致相同
void sleeplock_acquire(sleeplock_t* lk);
void sleeplock_release(sleeplock_t* lk);
bool sleeplock_holding(sleeplock_t* lk);
#endif