X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/94b8e4f0425cebad0a186daf054168fa6910f9b8..91dfab84182937b62ef64cb12d8e4f89e6d5c3ec:/lincan/src/select.c diff --git a/lincan/src/select.c b/lincan/src/select.c index 79d97fc..894214d 100644 --- a/lincan/src/select.c +++ b/lincan/src/select.c @@ -20,9 +20,7 @@ unsigned int can_poll(struct file *file, poll_table *wait) struct canque_ends_t *qends; struct msgobj_t *obj; unsigned int mask = 0; - unsigned long flags; struct canque_edge_t *edge; - struct list_head *entry; int full=0; int i; @@ -45,13 +43,10 @@ unsigned int can_poll(struct file *file, poll_table *wait) if ((file->f_mode & FMODE_WRITE) && !(file->f_flags & O_SYNC)) { poll_wait(file, &qends->endinfo.fileinfo.writeq, wait); - spin_lock_irqsave(&qends->ends_lock, flags); - list_for_each(entry,&qends->inlist){ - edge=list_entry(entry,struct canque_edge_t,inpeers); + canque_for_each_inedge(qends, edge) { if(canque_fifo_test_fl(&edge->fifo,FULL)) full=1; } - spin_unlock_irqrestore(&qends->ends_lock, flags); if(!full) mask |= POLLOUT | POLLWRNORM; @@ -60,13 +55,10 @@ unsigned int can_poll(struct file *file, poll_table *wait) if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_SYNC)) { poll_wait(file, &qends->endinfo.fileinfo.emptyq, wait); - spin_lock_irqsave(&qends->ends_lock, flags); - list_for_each(entry,&qends->inlist){ - edge=list_entry(entry,struct canque_edge_t,inpeers); + canque_for_each_inedge(qends, edge) { if(!canque_fifo_test_fl(&edge->fifo,EMPTY)) full=1; } - spin_unlock_irqrestore(&qends->ends_lock, flags); if(!full) mask |= POLLOUT | POLLWRNORM;