summaryrefslogtreecommitdiff
path: root/file.h
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2011-08-26 10:08:29 -0400
committerFrans Kaashoek <[email protected]>2011-08-26 10:08:29 -0400
commit3a5fa7ed9020eaf8ab843a16d26db7393b2ec072 (patch)
treebfa4ad4ae03d7d21796bacaa7eab8e3d3e4ab365 /file.h
parent8a9b6dbd4468f6312f1d07226a623879f970bd4b (diff)
downloadxv6-labs-3a5fa7ed9020eaf8ab843a16d26db7393b2ec072.tar.gz
xv6-labs-3a5fa7ed9020eaf8ab843a16d26db7393b2ec072.tar.bz2
xv6-labs-3a5fa7ed9020eaf8ab843a16d26db7393b2ec072.zip
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)
Diffstat (limited to 'file.h')
-rw-r--r--file.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/file.h b/file.h
index 55918cc..d7d8fed 100644
--- a/file.h
+++ b/file.h
@@ -15,7 +15,9 @@ struct inode {
uint dev; // Device number
uint inum; // Inode number
int ref; // Reference count
- int flags; // I_BUSY, I_VALID
+ int flags; // I_VALID
+ struct spinlock lock;
+ struct sleeplock sleeplock;
short type; // copy of disk inode
short major;
@@ -25,10 +27,8 @@ struct inode {
uint addrs[NDIRECT+1];
};
-#define I_BUSY 0x1
#define I_VALID 0x2
-
// device implementations
struct devsw {