提交 5ac7038c 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

cv_tick: bug fix.

上级 69db41a0
...@@ -28,6 +28,7 @@ void ...@@ -28,6 +28,7 @@ void
cv_tick(void) cv_tick(void)
{ {
struct proc *p, *tmp; struct proc *p, *tmp;
struct condvar *cv;
int again; int again;
u64 now; u64 now;
...@@ -45,10 +46,11 @@ cv_tick(void) ...@@ -45,10 +46,11 @@ cv_tick(void)
if (tryacquire(&p->lock)) { if (tryacquire(&p->lock)) {
if (tryacquire(&p->oncv->lock)) { if (tryacquire(&p->oncv->lock)) {
LIST_REMOVE(p, cv_sleep); LIST_REMOVE(p, cv_sleep);
cv = p->oncv;
p->cv_wakeup = 0; p->cv_wakeup = 0;
wakeup(p); wakeup(p);
release(&p->lock); release(&p->lock);
release(&p->oncv->lock); release(&cv->lock);
continue; continue;
} else { } else {
release(&p->lock); release(&p->lock);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论