| plan 9 kernel history: overview | file list | diff list |
1990/0403/port/sturp.c (diff list | history)
| 1990/0331/sys/src/9/port/sturp.c:207,212 – 1990/0403/sys/src/9/port/sturp.c:207,215 (short | long | prev | next) | ||
| 1990/0312 | * kill off the kernel process */ wakeup(&up->rq->r); | |
| 1990/0403 | if(up->kstarted == 0) up->state = 0; | |
| 1990/0227 | } /* | |
| 1990/0331/sys/src/9/port/sturp.c:253,259 – 1990/0403/sys/src/9/port/sturp.c:256,262 | ||
| 1990/0227 | /* | |
| 1990/0312 | * take care of any data | |
| 1990/0227 | */ | |
| 1990/0312 |
| |
| 1990/0403 | if(BLEN(bp)>0 && !QFULL(q->next)) | |
| 1990/0227 | PUTNEXT(q, bp); else freeb(bp); | |
| 1990/0331/sys/src/9/port/sturp.c:311,317 – 1990/0403/sys/src/9/port/sturp.c:314,320 | ||
| 1990/0227 | case SEQ+4: case SEQ+5: case SEQ+6: case SEQ+7: | |
| 1990/0321 | qlock(&up->ack); | |
| 1990/0312 | i = ctl & Nmask; | |
| 1990/0403 | if(!QFULL(q->next)) | |
| 1990/0312 | sendctl(up, up->lastecho = ECHO+i); up->iseq = i; | |
| 1990/0321 | qunlock(&up->ack); | |
| 1990/0331/sys/src/9/port/sturp.c:479,485 – 1990/0403/sys/src/9/port/sturp.c:482,488 | ||
| 1990/0227 | */ | |
| 1990/0321 | qlock(&up->ack); | |
| 1990/0312 | up->iseq = i; | |
| 1990/0321 |
| |
| 1990/0403 | if(!QFULL(q->next)) | |
| 1990/0321 | sendctl(up, up->lastecho = ECHO|i); qunlock(&up->ack); | |
| 1990/0227 | break; | |
| 1990/0331/sys/src/9/port/sturp.c:572,578 – 1990/0403/sys/src/9/port/sturp.c:575,583 | ||
| 1990/0312 | * fill the transmit buffers | |
| 1990/0227 | */ | |
| 1990/0312 | q = up->wq; | |
| 1990/0403 | for(bp = getq(q); q->first && up->xb[up->nxb]==0; up->nxb = NEXT(up->nxb)){ if(bp == 0) bp = getq(q); | |
| 1990/0312 | if(BLEN(bp) > up->maxblock){ nbp = up->xb[up->nxb] = allocb(0); nbp->rptr = bp->rptr; | |
| 1990/0331/sys/src/9/port/sturp.c:579,585 – 1990/0403/sys/src/9/port/sturp.c:584,590 | ||
| 1990/0312 | nbp->wptr = bp->rptr = bp->rptr + up->maxblock; } else { up->xb[up->nxb] = bp; | |
| 1990/0403 | bp = 0; | |
| 1990/0227 | } } | |
| 1990/0312 | if(bp) | |
| 1990/0331/sys/src/9/port/sturp.c:622,628 – 1990/0403/sys/src/9/port/sturp.c:627,633 | ||
| 1990/0227 | { | |
| 1990/0312 | Block *bp; | |
| 1990/0227 | ||
| 1990/0312 |
| |
| 1990/0403 | if(QFULL(up->wq->next)) | |
| 1990/0227 | return; | |
| 1990/0312 | bp = allocb(1); bp->wptr = bp->lim; | |
| 1990/0331/sys/src/9/port/sturp.c:658,664 – 1990/0403/sys/src/9/port/sturp.c:663,669 | ||
| 1990/0321 | /* * check the precondition for acking */ | |
| 1990/0403 | if(QFULL(up->rq->next) || (up->lastecho&Nmask)==up->iseq) | |
| 1990/0321 | return; if(!canqlock(&up->ack)) | |
| 1990/0331/sys/src/9/port/sturp.c:667,673 – 1990/0403/sys/src/9/port/sturp.c:672,678 | ||
| 1990/0321 | /* * check again now that we've locked */ | |
| 1990/0403 | if(QFULL(up->rq->next) || (up->lastecho&Nmask)==up->iseq){ | |
| 1990/0321 | qunlock(&up->ack); return; } | |
| 1990/0331/sys/src/9/port/sturp.c:689,695 – 1990/0403/sys/src/9/port/sturp.c:694,700 | ||
| 1990/0312 | int n; | |
| 1990/0227 | ||
| 1990/0312 | up->timer = NOW + MSrexmit; | |
| 1990/0403 | if(QFULL(up->wq->next)) | |
| 1990/0312 | return; /* | |
| 1990/0331/sys/src/9/port/sturp.c:804,811 – 1990/0403/sys/src/9/port/sturp.c:809,814 | ||
| 1990/0227 | up->maxblock = window/4; if(up->maxblock < 64) up->maxblock = 64; | |
| 1990/0312 | up->maxblock -= 4; up->maxout = 3; | |
| 1990/0227 | ||
| 1990/0331/sys/src/9/port/sturp.c:870,875 – 1990/0403/sys/src/9/port/sturp.c:873,884 | ||
| 1990/0312 | up = (Urp *)arg; | |
| 1990/0403 | if(waserror()){ up->state = 0; up->kstarted = 0; wakeup(&up->r); return; } | |
| 1990/0312 | for(;;){ if(up->state & (HUNGUP|CLOSING)){ if(isflushed(up)) | |
| 1990/0331/sys/src/9/port/sturp.c:881,886 – 1990/0403/sys/src/9/port/sturp.c:890,895 | ||
| 1990/0312 | output(up); tsleep(&up->rq->r, todo, up, MSrexmit/2); } | |
| 1990/0403 | up->kstarted = 0; | |
| 1990/0227 | } | |