In doing so also corrects sleep behaviour
if (ino->c_refs == 1) /* No writers */
break;
/* Sleep if empty pipe */
- psleep(ino);
+ if (psleep_flags(ino, flag))
+ break;
}
toread = udata.u_count = min(udata.u_count, ino->c_node.i_size);
if (toread == 0) {
bool ispipe;
blkno_t pblk;
uint16_t dev;
- bool ndelay = (flag & O_NDELAY) ? 1 : 0;
dev = ino->c_dev;
return;
}
/* Sleep if empty pipe */
- if (ndelay) {
- udata.u_error = EWOULDBLOCK;
- return;
- }
- psleep(ino);
+ if (psleep_flags(ino, flag))
+ return;
}
/* Sleep if empty pipe */
goto loop;