| plan 9 kernel history: overview | file list | diff list |
1990/0725/port/sturp.c (diff list | history)
| 1990/0722/sys/src/9/port/sturp.c:68,73 – 1990/0725/sys/src/9/port/sturp.c:68,79 (short | long | prev | next) | ||
| 1990/0312 | #define NEXT(x) (((x)+1)&Nmask) | |
| 1990/0227 | /* | |
| 1990/0725 | * Alarm for urptiming */ Alarm *urptiming; Lock urptlock; /* | |
| 1990/0227 | * Protocol control bytes */ #define SEQ 0010 /* sequence number, ends trailers */ | |
| 1990/0722/sys/src/9/port/sturp.c:116,121 – 1990/0725/sys/src/9/port/sturp.c:122,128 | ||
| 1990/0227 | static void initoutput(Urp*, int); static void initinput(Urp*, int); | |
| 1990/0312 | static void urpkproc(void *arg); | |
| 1990/0725 | static void urptimer(Alarm*); | |
| 1990/0629 | static void urpvomit(char*, Urp*); | |
| 1990/0227 | ||
| 1990/0312 | Qinfo urpinfo = { urpciput, urpoput, urpopen, urpclose, "urp" }; | |
| 1990/0722/sys/src/9/port/sturp.c:165,170 – 1990/0725/sys/src/9/port/sturp.c:172,188 | ||
| 1990/0722 | sprint(name, "urp%d", up - urp); | |
| 1990/0312 | kproc(name, urpkproc, up); } | |
| 1990/0725 | /* * start the urptimer if it isn't already */ if(urptiming==0){ if(canlock(&urptlock)){ if(urptiming == 0) urptiming = alarm(500, urptimer, 0); unlock(&urptlock); } } | |
| 1990/0227 | } /* | |
| 1990/0722/sys/src/9/port/sturp.c:589,594 – 1990/0725/sys/src/9/port/sturp.c:607,623 | ||
| 1990/0312 | int n; | |
| 1990/0511 | int i; | |
| 1990/0227 | ||
| 1990/0725 | /* * start the urptimer if it isn't already */ if(urptiming==0){ if(canlock(&urptlock)){ if(urptiming == 0) urptiming = alarm(500, urptimer, 0); unlock(&urptlock); } } | |
| 1990/0312 | if(!canqlock(&up->xmit)) return; | |
| 1990/0227 | ||
| 1990/0722/sys/src/9/port/sturp.c:967,977 – 1990/0725/sys/src/9/port/sturp.c:996,1028 | ||
| 1990/0511 | if(!QFULL(up->rq->next)) sendack(up); | |
| 1990/0312 | output(up); | |
| 1990/0725 | sleep(&up->rq->r, todo, up); | |
| 1990/0312 | } up->state = 0; | |
| 1990/0403 | up->kstarted = 0; | |
| 1990/0511 | DPRINT("urpkproc %ux\n", up); | |
| 1990/0725 | } /* * timer to wakeup urpkproc's for retransmissions */ static void urptimer(Alarm *a) { Urp *up; Urp *last; Queue *q; urptiming = 0; for(up = urp, last = &urp[conf.nurp]; up < last; up++){ if(up->state==0) continue; if(up->unacked!=up->next && NOW>up->timer){ q = up->rq; if(q) wakeup(&q->r); } } | |
| 1990/0629 | } /* | |