wq nits

上级 6eb504cc
...@@ -60,24 +60,25 @@ wq::declen(int c) ...@@ -60,24 +60,25 @@ wq::declen(int c)
} }
int int
wq::push(work *w, int tcpuid) wq::push(work *w, int c)
{ {
struct wqueue* q = &q_[c];
int i; int i;
wqlock_acquire(&q_[tcpuid].lock); wqlock_acquire(&q->lock);
i = q_[tcpuid].head; i = q->head;
if ((i - q_[tcpuid].tail) == NSLOTS) { if ((i - q->tail) == NSLOTS) {
stat_[tcpuid].full++; stat_[c].full++;
wqlock_release(&q_[tcpuid].lock); wqlock_release(&q->lock);
return -1; return -1;
} }
i = i & (NSLOTS-1); i = i & (NSLOTS-1);
q_[tcpuid].w[i] = w; q->w[i] = w;
barrier(); barrier();
q_[tcpuid].head++; q->head++;
inclen(tcpuid); inclen(c);
stat_[tcpuid].push++; stat_[c].push++;
wqlock_release(&q_[tcpuid].lock); wqlock_release(&q->lock);
return 0; return 0;
} }
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论