提交 5c9fbe15 创建 作者: Frans Kaashoek's avatar Frans Kaashoek

some condvar cleanup

上级 2d239530
......@@ -54,7 +54,7 @@ binit(void)
b->dev = -1;
bcache.head.next->prev = b;
bcache.head.next = b;
initlock(&b->cv.lock, "bache");
initcondvar(&b->cv, "bache");
}
}
......
......@@ -9,6 +9,12 @@
#include "proc.h"
void
initcondvar(struct condvar *cv, char *n)
{
initlock(&cv->lock, n);
}
void
cv_sleep(struct condvar *cv, struct spinlock *lk)
{
if(proc == 0)
......
struct condvar {
char name[MAXNAME];
struct spinlock lock;
struct proc *waiters;
void *chan; // If non-zero, sleeping on chan
};
......@@ -282,7 +282,7 @@ consoleinit(void)
{
initlock(&cons.lock, "console");
initlock(&input.lock, "input");
initlock(&input.cv.lock, "input");
initcondvar(&input.cv, "input");
devsw[CONSOLE].write = consolewrite;
devsw[CONSOLE].read = consoleread;
......
......@@ -15,6 +15,7 @@ void brelse(struct buf*);
void bwrite(struct buf*);
// condvar.c
void initcondvar(struct condvar *, char *);
void cv_sleep(struct condvar *cv, struct spinlock*);
void cv_wakeup(struct condvar *cv);
......
......@@ -142,7 +142,7 @@ iinit(void)
int i;
initlock(&icache.lock, "icache");
for (i = 0; i < NINODE; i++) {
initlock(&icache.inode[i].cv.lock, "icache");
initcondvar(&icache.inode[i].cv, "icache");
}
}
......
......@@ -29,7 +29,7 @@ pinit(void)
for (i = 0; i < NPROC; i++) {
initlock(&ptables[c].proc[i].lock, ptables[c].proc[i].name);
initlock(&ptables[c].proc[i].cv.lock, ptables[c].proc[i].name); // XXX cv_init
initcondvar(&ptables[c].proc[i].cv, ptables[c].proc[i].name); // XXX cv_init
}
runqs[c].name[0] = (char) (c + '0');
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论