| plan 9 kernel history: overview | file list | diff list |
1990/03081/port/devmnt.c (diff list | history)
| 1990/0306/sys/src/9/port/devmnt.c:553,559 – 1990/03081/sys/src/9/port/devmnt.c:553,559 (short | long | prev | next) | ||
| 1990/0227 | { ulong n; Mntbuf *mbr, *mbw; | |
| 1990/03081 | Chan *mntpt, *msg; | |
| 1990/0306 | int isbit; | |
| 1990/0227 | mbr = mballoc(); | |
| 1990/0306/sys/src/9/port/devmnt.c:564,586 – 1990/03081/sys/src/9/port/devmnt.c:564,601 | ||
| 1990/0227 | nexterror(); } n = convS2M(&mh->thdr, mbw->buf); | |
| 1990/0306 | isbit = 0; if(devchar[m->msg->type] == 'b') isbit = 1; | |
| 1990/03081 | /* * Avoid qlock for bit, to maximize parallelism */ if(isbit){ lock(&m->use); /* spin rather than sleep */ if((msg = m->msg) == 0){ unlock(&m->use); error(0, Eshutdown); } incref(msg); unlock(&m->use); }else{ qlock(m); if((msg = m->msg) == 0){ qunlock(m); error(0, Eshutdown); } qlock(msg); } | |
| 1990/0227 | if(waserror()){ | |
| 1990/0306 |
| |
| 1990/03081 | if(isbit) close(msg); else{ qunlock(m); qunlock(msg); } | |
| 1990/0227 | nexterror(); } | |
| 1990/03081 | if((*devtab[msg->type].write)(msg, mbw->buf, n) != n){ | |
| 1990/0227 | pprint("short write in mntxmit\n"); error(0, Egreg); } | |
| 1990/0306/sys/src/9/port/devmnt.c:588,597 – 1990/03081/sys/src/9/port/devmnt.c:603,615 | ||
| 1990/0227 | /* * Read response */ | |
| 1990/0306 |
| |
| 1990/03081 | n = (*devtab[msg->type].read)(msg, mbr->buf, BUFSIZE); if(isbit) close(msg); else{ qunlock(m); qunlock(msg); } | |
| 1990/0227 | poperror(); if(convM2S(mbr->buf, &mh->rhdr, n) == 0){ | |