提交 1c7aa960 创建 作者: Robert Morris's avatar Robert Morris

a little more lock documentation

上级 70d912b3
...@@ -154,6 +154,15 @@ bfree(int dev, uint b) ...@@ -154,6 +154,15 @@ bfree(int dev, uint b)
// Many internal file system functions expect the caller to // Many internal file system functions expect the caller to
// have locked the inodes involved; this lets callers create // have locked the inodes involved; this lets callers create
// multi-step atomic operations. // multi-step atomic operations.
//
// The icache.lock spin-lock defends ip->ref, ip->dev, and ip->inum.
// Since ip->ref indicates whether an icache entry is free, the
// icache.lock defends icache allocation. icache.lock also defends
// all fields of an unallocated icache entry, during allocation.
//
// An ip->lock sleep-lock defends all ip-> fields other than ref,
// dev, and inum. One must hold ip->lock in order to
// read or write that inode's ip->valid, ip->size, ip->type, &c.
struct { struct {
struct spinlock lock; struct spinlock lock;
...@@ -205,6 +214,7 @@ ialloc(uint dev, short type) ...@@ -205,6 +214,7 @@ ialloc(uint dev, short type)
} }
// Copy a modified in-memory inode to disk. // Copy a modified in-memory inode to disk.
// Caller must hold ip->lock.
void void
iupdate(struct inode *ip) iupdate(struct inode *ip)
{ {
...@@ -421,6 +431,7 @@ itrunc(struct inode *ip) ...@@ -421,6 +431,7 @@ itrunc(struct inode *ip)
} }
// Copy stat information from inode. // Copy stat information from inode.
// Caller must hold ip->lock.
void void
stati(struct inode *ip, struct stat *st) stati(struct inode *ip, struct stat *st)
{ {
...@@ -433,6 +444,7 @@ stati(struct inode *ip, struct stat *st) ...@@ -433,6 +444,7 @@ stati(struct inode *ip, struct stat *st)
//PAGEBREAK! //PAGEBREAK!
// Read data from inode. // Read data from inode.
// Caller must hold ip->lock.
int int
readi(struct inode *ip, char *dst, uint off, uint n) readi(struct inode *ip, char *dst, uint off, uint n)
{ {
...@@ -461,6 +473,7 @@ readi(struct inode *ip, char *dst, uint off, uint n) ...@@ -461,6 +473,7 @@ readi(struct inode *ip, char *dst, uint off, uint n)
// PAGEBREAK! // PAGEBREAK!
// Write data to inode. // Write data to inode.
// Caller must hold ip->lock.
int int
writei(struct inode *ip, char *src, uint off, uint n) writei(struct inode *ip, char *src, uint off, uint n)
{ {
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论