| plan 9 kernel history: overview | file list | diff list |
1990/0728/port/sturp.c (diff list | history)
| 1990/0726/sys/src/9/port/sturp.c:68,79 – 1990/0728/sys/src/9/port/sturp.c:68,73 (short | long | prev | next) | ||
| 1990/0312 | #define NEXT(x) (((x)+1)&Nmask) | |
| 1990/0227 | /* | |
| 1990/0725 |
| |
| 1990/0227 | * Protocol control bytes */ #define SEQ 0010 /* sequence number, ends trailers */ | |
| 1990/0726/sys/src/9/port/sturp.c:132,137 – 1990/0728/sys/src/9/port/sturp.c:126,132 | ||
| 1990/0717 | { newqinfo(&urpinfo); urp = (Urp *)ialloc(conf.nurp*sizeof(Urp), 0); | |
| 1990/0728 | alarm(500, urptimer, 0); | |
| 1990/0717 | } | |
| 1990/0312 | static void | |
| 1990/0726/sys/src/9/port/sturp.c:167,188 – 1990/0728/sys/src/9/port/sturp.c:162,169 | ||
| 1990/0312 | /* * start the ack/(re)xmit process */ | |
| 1990/0722 |
| |
| 1990/0312 |
| |
| 1990/0725 |
| |
| 1990/0728 | sprint(name, "urp%d", up - urp); kproc(name, urpkproc, up); | |
| 1990/0227 | } /* | |
| 1990/0726/sys/src/9/port/sturp.c:189,194 – 1990/0728/sys/src/9/port/sturp.c:170,183 | ||
| 1990/0312 | * Shut down the connection and kill off the kernel process | |
| 1990/0227 | */ static int | |
| 1990/0728 | isdead(void *a) { Urp *up; up = (Urp *)a; return up->kstarted==0; } static int | |
| 1990/0312 | isflushed(void *a) | |
| 1990/0227 | { Urp *up; | |
| 1990/0726/sys/src/9/port/sturp.c:217,223 – 1990/0728/sys/src/9/port/sturp.c:206,212 | ||
| 1990/0509 | tsleep(&up->r, isflushed, up, 2*60*1000); | |
| 1990/0312 | /* | |
| 1990/0509 |
| |
| 1990/0728 | * tell kernel process to die | |
| 1990/0312 | */ up->state |= HUNGUP; | |
| 1990/0509 | wakeup(&up->rq->r); | |
| 1990/0726/sys/src/9/port/sturp.c:241,250 – 1990/0728/sys/src/9/port/sturp.c:230,242 | ||
| 1990/0509 | } qunlock(&up->xmit); | |
| 1990/0403 | ||
| 1990/0511 |
| |
| 1990/0403 |
| |
| 1990/0511 |
| |
| 1990/0728 | /* * wait for kernel process to die */ while(up->kstarted) sleep(&up->r, isdead, up); up->state = 0; | |
| 1990/0227 | } /* | |
| 1990/0726/sys/src/9/port/sturp.c:607,623 – 1990/0728/sys/src/9/port/sturp.c:599,604 | ||
| 1990/0312 | int n; | |
| 1990/0511 | int i; | |
| 1990/0227 | ||
| 1990/0725 |
| |
| 1990/0312 | if(!canqlock(&up->xmit)) return; | |
| 1990/0227 | ||
| 1990/0726/sys/src/9/port/sturp.c:636,644 – 1990/0728/sys/src/9/port/sturp.c:617,623 | ||
| 1990/0312 | sendctl(up, INIT1); up->timer = now + MSrexmit; | |
| 1990/0227 | } | |
| 1990/0312 |
| |
| 1990/0728 | goto out; | |
| 1990/0227 | } /* | |
| 1990/0726/sys/src/9/port/sturp.c:682,690 – 1990/0728/sys/src/9/port/sturp.c:661,667 | ||
| 1990/0312 | up->timer = NOW + MSrexmit; up->state &= ~REJECTING; sendctl(up, ENQ); | |
| 1990/0728 | goto out; | |
| 1990/0312 | } /* | |
| 1990/0726/sys/src/9/port/sturp.c:705,710 – 1990/0728/sys/src/9/port/sturp.c:682,688 | ||
| 1990/0312 | up->next = NEXT(up->next); | |
| 1990/0511 | poperror(); | |
| 1990/0312 | } | |
| 1990/0728 | out: | |
| 1990/0312 | qunlock(&up->xmit); poperror(); | |
| 1990/0227 | } | |
| 1990/0726/sys/src/9/port/sturp.c:970,1005 – 1990/0728/sys/src/9/port/sturp.c:948,975 | ||
| 1990/0312 | static void urpkproc(void *arg) { | |
| 1990/0721 |
| |
| 1990/0728 | Urp *up; | |
| 1990/0312 | up = (Urp *)arg; | |
| 1990/0721 |
| |
| 1990/0728 | up->kstarted = 1; | |
| 1990/0312 | ||
| 1990/0403 | if(waserror()){ | |
| 1990/0511 | print("urpkproc error %ux\n", up); | |
| 1990/0403 |
| |
| 1990/0312 | for(;;){ | |
| 1990/0511 |
| |
| 1990/0728 | if(up->state & HUNGUP) | |
| 1990/0511 | break; | |
| 1990/0312 | output(up); | |
| 1990/0725 | sleep(&up->rq->r, todo, up); | |
| 1990/0312 | } | |
| 1990/0403 | up->kstarted = 0; | |
| 1990/0728 | wakeup(&up->r); poperror(); | |
| 1990/0511 | DPRINT("urpkproc %ux\n", up); | |
| 1990/0725 | } | |
| 1990/0726/sys/src/9/port/sturp.c:1014,1020 – 1990/0728/sys/src/9/port/sturp.c:984,990 | ||
| 1990/0725 | Queue *q; | |
| 1990/0726 | cancel(a); | |
| 1990/0725 |
| |
| 1990/0728 | alarm(500, urptimer, 0); | |
| 1990/0725 | for(up = urp, last = &urp[conf.nurp]; up < last; up++){ if(up->state==0) continue; | |