| plan 9 kernel history: overview | file list | diff list |
1998/0328/port/qio.c (diff list | history)
| 1997/1105/sys/src/9/port/qio.c:766,771 – 1998/0328/sys/src/9/port/qio.c:766,772 (short | long | prev | next) | ||
| 1993/0526 | if(q == 0) | |
| 1993/0528 | return 0; | |
| 1998/0328 | ilock(q); | |
| 1994/0902 | q->limit = q->inilim = limit; | |
| 1993/0526 | q->kick = kick; q->arg = arg; | |
| 1997/1105/sys/src/9/port/qio.c:772,777 – 1998/0328/sys/src/9/port/qio.c:773,779 | ||
| 1993/0530 | q->state = msg ? Qmsg : 0; | |
| 1993/0601 | q->state |= Qstarve; | |
| 1993/0908 | q->eof = 0; | |
| 1998/0328 | iunlock(q); | |
| 1993/0526 | return q; } | |
| 1997/1105/sys/src/9/port/qio.c:911,942 – 1998/0328/sys/src/9/port/qio.c:913,950 | ||
| 1994/0208 | dowakeup = 0; | |
| 1995/0714 | n = BLEN(b); | |
| 1993/0526 | ||
| 1998/0328 | qlock(&q->wlock); | |
| 1994/0208 | if(waserror()){ qunlock(&q->wlock); nexterror(); | |
| 1994/0804 | } | |
| 1994/0208 |
| |
| 1995/0714 | /* flow control */ | |
| 1998/0328 | for(;;){ ilock(q); if(q->state & Qclosed){ iunlock(q); freeb(b); error(q->err); } if(q->len < q->limit) break; | |
| 1995/0714 | if(q->noblock){ | |
| 1998/0328 | iunlock(q); | |
| 1995/0714 | freeb(b); | |
| 1993/1227 | qunlock(&q->wlock); | |
| 1994/0208 | poperror(); | |
| 1995/0714 | return n; | |
| 1993/1227 | } | |
| 1998/0328 | ||
| 1995/0714 | q->state |= Qflow; | |
| 1998/0328 | iunlock(q); | |
| 1995/0714 | sleep(&q->wr, qnotfull, q); | |
| 1993/0526 | } | |
| 1995/0714 |
| |
| 1996/0305 |
| |
| 1997/0327 |
| |
| 1995/0714 |
| |
| 1997/1105/sys/src/9/port/qio.c:1120,1129 – 1998/0328/sys/src/9/port/qio.c:1128,1139 | ||
| 1993/0528 | void qreopen(Queue *q) { | |
| 1998/0328 | ilock(q); | |
| 1993/0528 | q->state &= ~Qclosed; | |
| 1993/0601 | q->state |= Qstarve; | |
| 1993/0908 | q->eof = 0; | |
| 1994/0902 | q->limit = q->inilim; | |
| 1998/0328 | iunlock(q); | |
| 1993/0530 | } /* | |