Lines Matching refs:pk
50 pkcntl(c, pk) in pkcntl() argument
52 struct pack *pk;
70 pk->p_xsize = xpacksize = pksizes[val];
71 pk->p_lpsize = val;
72 pk->p_bits = 1;
73 if (pk->p_state & LIVE) {
74 pk->p_msg |= M_INITC;
77 pk->p_state |= INITb;
78 if ((pk->p_state & INITa)==0) {
81 pk->p_rmsg &= ~M_INITA;
82 pk->p_msg |= M_INITC;
86 if ((pk->p_state&INITab)==INITab) {
87 pk->p_state = LIVE;
88 pk->p_rmsg &= ~M_INITB;
90 pk->p_msg |= M_INITB;
92 pk->p_swindow = val;
95 if (val==0 && pk->p_state&LIVE) {
100 pk->p_state |= INITa;
101 pk->p_msg |= M_INITB;
102 pk->p_rmsg |= M_INITB;
103 pk->p_swindow = val;
107 pk->p_state |= RXMIT;
108 pk->p_msg |= M_RR;
112 pk->p_rpr = val;
113 (void) pksack(pk);
116 pk->p_state = DOWN+RCLOSE;
119 if (pk->p_msg)
120 pkoutput(pk);
126 struct pack *pk; in pkaccept() local
132 pk = Pk; in pkaccept()
138 x = next[pk->p_pr]; in pkaccept()
139 while ((imask=pk->p_imap) == 0 && pk->p_rcount==0) { in pkaccept()
140 pkgetpack(pk); in pkaccept()
142 pk->p_imap = 0; in pkaccept()
148 t = (~(-1<<pk->p_rwindow)) <<x; in pkaccept()
161 if (((cntl=pk->p_is[x])&0200)==0) { in pkaccept()
164 bp = (char **)pk->p_ib[x]; in pkaccept()
165 *bp = (char *)pk->p_ipool; in pkaccept()
166 pk->p_ipool = bp; in pkaccept()
167 pk->p_is[x] = 0; in pkaccept()
171 pk->p_is[x] = (char) ~(B_COPY+B_MARK); in pkaccept()
172 sum = (unsigned)chksum(pk->p_ib[x], pk->p_rsize) ^ (unsigned)(cntl&0377); in pkaccept()
173 sum += pk->p_isum[x]; in pkaccept()
177 if (pk->p_is[seq] & (B_COPY | B_MARK)) { in pkaccept()
179 pk->p_msg |= M_RR; in pkaccept()
184 p = pk->p_ib[x]; in pkaccept()
185 pk->p_ib[x] = pk->p_ib[seq]; in pkaccept()
186 pk->p_is[x] = pk->p_is[seq]; in pkaccept()
187 pk->p_ib[seq] = p; in pkaccept()
189 pk->p_is[seq] = B_MARK; in pkaccept()
193 pk->p_is[seq] = B_MARK+B_SHORT; in pkaccept()
194 p = pk->p_ib[seq]; in pkaccept()
201 pk->p_isum[seq] = pk->p_rsize - cc; in pkaccept()
217 for(x=next[pk->p_pr],t= -1; m & mask[x]; x = next[x]) { in pkaccept()
218 if (pk->p_is[x] & B_MARK) in pkaccept()
219 pk->p_is[x] |= B_COPY; in pkaccept()
221 if (pk->p_is[x] & B_COPY) { in pkaccept()
223 bp = (char **)pk->p_ib[x]; in pkaccept()
224 *bp = (char *)pk->p_ipool; in pkaccept()
225 pk->p_ipool = bp; in pkaccept()
226 pk->p_is[x] = 0; in pkaccept()
235 pk->p_msg |= M_RJ; in pkaccept()
239 pk->p_msg |= M_RR; in pkaccept()
242 pk->p_rcount = accept; in pkaccept()
252 struct pack *pk; local
257 pk = Pk;
267 x = next[pk->p_pr];
268 is = pk->p_is[x];
271 cc = MIN(pk->p_isum[x], icount);
276 cp = pk->p_rptr;
278 cp = pk->p_ib[x];
290 pk->p_isum[x] -= cc;
291 if (pk->p_isum[x] == 0) {
292 pk->p_pr = x;
293 bp = (char **)pk->p_ib[x];
294 *bp = (char *)pk->p_ipool;
295 pk->p_ipool = bp;
296 pk->p_is[x] = 0;
297 pk->p_rcount--;
298 pk->p_msg |= M_RR;
300 pk->p_rptr = cp+cc;
301 pk->p_is[x] |= B_RESID;
308 pkoutput(pk);
318 struct pack *pk; local
324 pk = Pk;
325 if (pk->p_state&DOWN || !pk->p_state&LIVE) {
331 while (pk->p_xcount>=pk->p_swindow) {
332 pkoutput(pk);
333 pkgetpack(pk);
335 x = next[pk->p_pscopy];
336 while (pk->p_os[x]!=B_NULL) {
337 pkgetpack(pk);
339 pk->p_os[x] = B_MARK;
340 pk->p_pscopy = x;
341 pk->p_xcount++;
343 cp = pk->p_ob[x] = (caddr_t) malloc((unsigned) pk->p_xsize);
345 if ((int)icount < pk->p_xsize) {
347 fc = pk->p_xsize - cc;
356 cc = pk->p_xsize;
360 pk->p_osum[x] = chksum(pk->p_ob[x], pk->p_xsize);
361 pk->p_os[x] = B_READY+partial;
362 pkoutput(pk);
369 pksack(pk) in pksack() argument
370 struct pack *pk; in pksack()
375 for(x=pk->p_ps; x!=pk->p_rpr; ) {
377 if (pk->p_os[x]&B_SENT) {
380 pk->p_os[x] = B_NULL;
381 pk->p_state &= ~WAITO;
382 pk->p_xcount--;
383 free((char *) pk->p_ob[x]);
384 pk->p_ps = x;
392 pkoutput(pk) in pkoutput() argument
393 struct pack *pk; in pkoutput()
399 if (pk->p_obusy++) {
400 pk->p_obusy--;
409 if (pk->p_state&RXMIT)
410 pk->p_nxtps = next[pk->p_rpr];
411 x = pk->p_nxtps;
412 bstate = pk->p_os[x];
418 if (pk->p_msg) {
419 if (pk->p_msg & ~M_RR || !(bstate&B_READY) ) {
420 x = pk->p_msg;
433 x += pk->p_pr;
436 x += pksize(pk->p_rsize);
439 x += pk->p_rwindow;
442 x += pk->p_rwindow;
446 pk->p_msg &= ~mask[i];
447 pkxstart(pk, x, -1);
456 if (pk->p_state&DOWN) {
468 pk->p_nxtps = next[x];
470 x = 0200+pk->p_pr+(seq<<3);
473 pkxstart(pk, x, seq);
474 pk->p_os[seq] = bstate;
475 pk->p_state &= ~RXMIT;
476 pk->p_nout++;
484 if (pk->p_xcount) {
485 pk->p_timer = 2;
486 pk->p_state |= WAITO;
488 pk->p_state &= ~WAITO;
490 pk->p_obusy = 0;
501 struct pack *pk; in pkclose() local
506 pk = Pk; in pkclose()
507 pk->p_state |= DRAINO; in pkclose()
513 pk->p_timer = 2; in pkclose()
514 while (pk->p_xcount && pk->p_state&LIVE) { in pkclose()
515 if (pk->p_state&(RCLOSE+DOWN) || ++i > 2) in pkclose()
517 pkoutput(pk); in pkclose()
519 pk->p_timer = 0; in pkclose()
520 pk->p_state |= DOWN; in pkclose()
526 while ((pk->p_state&RCLOSE)==0 && i<2) { in pkclose()
527 pk->p_msg = M_CLOSE; in pkclose()
528 pk->p_timer = 2; in pkclose()
529 pkoutput(pk); in pkclose()
538 if (pk->p_os[i]!=B_NULL) { in pkclose()
539 free((char *) pk->p_ob[i]); in pkclose()
540 pk->p_xcount--; in pkclose()
542 if (pk->p_is[i]!=B_NULL) { in pkclose()
543 free((char *) pk->p_ib[i]); in pkclose()
547 while (pk->p_ipool != NULL) { in pkclose()
548 bp = pk->p_ipool; in pkclose()
549 pk->p_ipool = (char **)*bp; in pkclose()
553 if (rcheck != pk->p_rwindow) { in pkclose()
556 free((char *) pk); in pkclose()
561 pkreset(pk) in pkreset() argument
562 struct pack *pk; in pkreset()
565 pk->p_ps = pk->p_pr = pk->p_rpr = 0;
566 pk->p_nxtps = 1;