| plan 9 kernel history: overview | file list | diff list |
1990/1004/port/sturp.c (diff list | history)
| 1990/0930/sys/src/9/port/sturp.c:33,39 – 1990/1004/sys/src/9/port/sturp.c:33,39 (short | long | prev | next) | ||
| 1990/0227 | } urpstat; struct Urp { | |
| 1990/0312 |
| |
| 1990/1004 | Lock; | |
| 1990/0227 | short state; /* flags */ | |
| 1990/0312 | Rendez r; /* process waiting for close */ | |
| 1990/0227 | ||
| 1990/0930/sys/src/9/port/sturp.c:140,149 – 1990/1004/sys/src/9/port/sturp.c:140,149 | ||
| 1990/0227 | * find a free urp structure */ | |
| 1990/0717 | for(up = urp; up < &urp[conf.nurp]; up++){ | |
| 1990/0227 |
| |
| 1990/1004 | lock(up); | |
| 1990/0227 | if(up->state == 0) break; | |
| 1990/1004 | unlock(up); | |
| 1990/0227 | } | |
| 1990/0717 | if(up == &urp[conf.nurp]){ q->ptr = 0; | |
| 1990/0930/sys/src/9/port/sturp.c:155,161 – 1990/1004/sys/src/9/port/sturp.c:155,161 | ||
| 1990/0227 | up->rq = q; | |
| 1990/0312 | up->wq = q->other; up->state = OPEN; | |
| 1990/0227 |
| |
| 1990/1004 | unlock(up); | |
| 1990/0227 | initinput(up, 0); initoutput(up, 0); | |
| 1990/0312 | ||
| 1990/0930/sys/src/9/port/sturp.c:236,242 – 1990/1004/sys/src/9/port/sturp.c:236,245 | ||
| 1990/0728 | while(up->kstarted) sleep(&up->r, isdead, up); | |
| 1990/1004 | lock(up); | |
| 1990/0728 | up->state = 0; | |
| 1990/1004 | up->rq = 0; unlock(up); | |
| 1990/0227 | } /* | |
| 1990/0930/sys/src/9/port/sturp.c:465,470 – 1990/1004/sys/src/9/port/sturp.c:468,474 | ||
| 1990/0227 | case ACK+4: case ACK+5: case ACK+6: case ACK+7: case ECHO+0: case ECHO+1: case ECHO+2: case ECHO+3: case ECHO+4: case ECHO+5: case ECHO+6: case ECHO+7: | |
| 1990/1004 | DPRINT("rACK %ux\n", ctl); | |
| 1990/0227 | rcvack(up, ctl); break; | |
| 1990/0930/sys/src/9/port/sturp.c:695,702 – 1990/1004/sys/src/9/port/sturp.c:699,708 | ||
| 1990/0312 | sendctl(Urp *up, int ctl) | |
| 1990/0227 | { | |
| 1990/0312 | Block *bp; | |
| 1990/1004 | Queue *q; | |
| 1990/0227 | ||
| 1990/0403 |
| |
| 1990/1004 | q = up->wq; if(QFULL(q->next)) | |
| 1990/0227 | return; | |
| 1990/0312 | bp = allocb(1); bp->wptr = bp->lim; | |
| 1990/0930/sys/src/9/port/sturp.c:703,709 – 1990/1004/sys/src/9/port/sturp.c:709,716 | ||
| 1990/0312 | bp->rptr = bp->lim-1; *bp->rptr = ctl; bp->flags |= S_DELIM; | |
| 1990/1004 | PUTNEXT(q, bp); DPRINT("sCTL %ulx\n", ctl); | |
| 1990/0227 | } | |
| 1990/0312 | /* | |
| 1990/0930/sys/src/9/port/sturp.c:762,770 – 1990/1004/sys/src/9/port/sturp.c:769,779 | ||
| 1990/0227 | { | |
| 1990/0312 | Block *bp, *m, *nbp; int n; | |
| 1990/1004 | Queue *q; | |
| 1990/0227 | ||
| 1990/1004 | q = up->wq; | |
| 1990/0312 | up->timer = NOW + MSrexmit; | |
| 1990/0403 |
| |
| 1990/1004 | if(QFULL(q->next)) | |
| 1990/0312 | return; /* | |
| 1990/0930/sys/src/9/port/sturp.c:781,787 – 1990/1004/sys/src/9/port/sturp.c:790,796 | ||
| 1990/0312 | nbp->rptr = bp->rptr; nbp->wptr = bp->wptr; nbp->flags |= S_DELIM; | |
| 1990/1004 | PUTNEXT(q, m); | |
| 1990/0312 | /* * message 2, the block length and the SEQ | |
| 1990/0930/sys/src/9/port/sturp.c:794,800 – 1990/1004/sys/src/9/port/sturp.c:803,810 | ||
| 1990/0312 | m->rptr[1] = n; m->rptr[2] = n<<8; m->flags |= S_DELIM; | |
| 1990/1004 | PUTNEXT(q, m); DPRINT("sb %d\n", bn); | |
| 1990/0227 | } /* | |
| 1990/0930/sys/src/9/port/sturp.c:945,952 – 1990/1004/sys/src/9/port/sturp.c:955,962 | ||
| 1990/0804 | return (up->state&INITING) ? NOW>up->timer /* time to INIT1 */ | |
| 1990/0930 | : ((up->unechoed!=up->next && NOW>up->timer) /* time to ENQ */ | |
| 1990/0814 |
| |
| 1990/0804 |
| |
| 1990/1004 | || (WINDOW(up)>0 && (up->next!=up->nxb || up->wq->first)) /* open xmit window */ || (up->iseq!=(up->lastecho&7) && !QFULL(up->rq->next))); /* time to ECHO */ | |
| 1990/0312 | } static void urpkproc(void *arg) | |
| 1990/0930/sys/src/9/port/sturp.c:983,989 – 1990/1004/sys/src/9/port/sturp.c:993,998 | ||
| 1990/0725 | { Urp *up; Urp *last; | |
| 1990/0726 | cancel(a); | |
| 1990/0728 | alarm(500, urptimer, 0); | |
| 1990/0930/sys/src/9/port/sturp.c:990,997 – 1990/1004/sys/src/9/port/sturp.c:999,1010 | ||
| 1990/0725 | for(up = urp, last = &urp[conf.nurp]; up < last; up++){ if(up->state==0) continue; | |
| 1990/0804 |
| |
| 1990/1004 | if(up->rq && canlock(up)){ if(up->rq && NOW>up->timer && ((up->state&INITING) || up->unechoed!=up->next)) wakeup(&up->rq->r); unlock(up); } | |
| 1990/0725 | } | |
| 1990/0629 | } | |