| plan 9 kernel history: overview | file list | diff list |
1990/0703/port/devmnt.c (diff list | history)
| 1990/0629/sys/src/9/port/devmnt.c:769,775 – 1990/0703/sys/src/9/port/devmnt.c:769,780 (short | long | prev | next) | ||
| 1990/0604 | Read: qunlock(q); qlocked = 0; | |
| 1990/0703 | if(waserror()){ mnterrdequeue(q, mh); nexterror(); } | |
| 1990/0619 | n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE); | |
| 1990/0703 | poperror(); | |
| 1990/0619 | if(convM2S(mh->mbr->buf, &mh->rhdr, n) == 0){ | |
| 1990/0604 | mnterrdequeue(q, mh); error(0, Ebadmsg); | |
| 1990/0629/sys/src/9/port/devmnt.c:810,819 – 1990/0703/sys/src/9/port/devmnt.c:815,820 | ||
| 1990/0604 | wakeup(&w->r); goto Read; } | |
| 1990/0629 |
| |
| 1990/0604 | goto Read; }else{ mh->p = u->p; | |
| 1990/0629/sys/src/9/port/devmnt.c:849,856 – 1990/0703/sys/src/9/port/devmnt.c:850,860 | ||
| 1990/0227 | /* * Copy out on read */ | |
| 1990/0703 | if(mh->thdr.type == Tread){ if(mh->rhdr.count > mh->thdr.count) error(0, Ebadcnt); | |
| 1990/0227 | memcpy(mh->thdr.data, mh->rhdr.data, mh->rhdr.count); | |
| 1990/0703 | } | |
| 1990/0619 | mbfree(mh->mbr); | |
| 1990/0227 | mbfree(mbw); poperror(); | |