Introduce and use sleeplocks instead of BUSY flags
Remove I_BUSY, B_BUSY, and intrans defs and usages One spinlock per buf to avoid ugly loop in bget fix race in filewrite (don't update f->off after releasing lock)
This commit is contained in:
parent
8a9b6dbd44
commit
3a5fa7ed90
12 changed files with 106 additions and 63 deletions
5
defs.h
5
defs.h
|
|
@ -5,6 +5,7 @@ struct inode;
|
|||
struct pipe;
|
||||
struct proc;
|
||||
struct spinlock;
|
||||
struct sleeplock;
|
||||
struct stat;
|
||||
struct superblock;
|
||||
|
||||
|
|
@ -129,6 +130,10 @@ void initlock(struct spinlock*, char*);
|
|||
void release(struct spinlock*);
|
||||
void pushcli(void);
|
||||
void popcli(void);
|
||||
void initsleeplock(struct sleeplock*);
|
||||
void acquire_sleeplock(struct sleeplock*,struct spinlock*);
|
||||
void release_sleeplock(struct sleeplock*);
|
||||
int acquired_sleeplock(struct sleeplock*);
|
||||
|
||||
// string.c
|
||||
int memcmp(const void*, const void*, uint);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue