Lines Matching refs:db

173 static int	bsd_init        (void *db, unsigned char *options,
222 bsd_clear(struct bsd_db *db)
224 db->clear_count++;
225 db->max_ent = FIRST-1;
226 db->n_bits = BSD_INIT_BITS;
227 db->bytes_out = 0;
228 db->in_count = 0;
229 db->ratio = 0;
230 db->checkpoint = CHECK_GAP;
247 static int bsd_check (struct bsd_db *db) /* 1=output CLEAR */
251 if (db->in_count >= db->checkpoint)
254 if (db->in_count >= RATIO_MAX || db->bytes_out >= RATIO_MAX)
256 db->in_count -= (db->in_count >> 2);
257 db->bytes_out -= (db->bytes_out >> 2);
260 db->checkpoint = db->in_count + CHECK_GAP;
262 if (db->max_ent >= db->maxmaxcode)
269 * db->in_count <= RATIO_MAX.
272 new_ratio = db->in_count << RATIO_SCALE_LOG;
273 if (db->bytes_out != 0)
275 new_ratio /= db->bytes_out;
278 if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE)
280 bsd_clear (db);
283 db->ratio = new_ratio;
295 struct bsd_db *db = (struct bsd_db *) state;
297 stats->unc_bytes = db->uncomp_bytes;
298 stats->unc_packets = db->uncomp_count;
299 stats->comp_bytes = db->comp_bytes;
300 stats->comp_packets = db->comp_count;
301 stats->inc_bytes = db->incomp_bytes;
302 stats->inc_packets = db->incomp_count;
303 stats->in_count = db->in_count;
304 stats->bytes_out = db->bytes_out;
313 struct bsd_db *db = (struct bsd_db *) state;
315 bsd_clear(db);
317 db->seqno = 0;
318 db->clear_count = 0;
327 struct bsd_db *db = state;
329 if (!db)
335 vfree(db->dict);
336 db->dict = NULL;
340 vfree(db->lens);
341 db->lens = NULL;
345 kfree(db);
356 struct bsd_db *db;
398 db = kzalloc(sizeof (struct bsd_db),
400 if (!db)
409 db->dict = vmalloc(array_size(hsize, sizeof(struct bsd_dict)));
410 if (!db->dict)
412 bsd_free (db);
421 db->lens = NULL;
428 db->lens = vmalloc(array_size(sizeof(db->lens[0]), (maxmaxcode + 1)));
429 if (!db->lens)
431 bsd_free (db);
438 db->totlen = sizeof (struct bsd_db) +
441 db->hsize = hsize;
442 db->hshift = hshift;
443 db->maxmaxcode = maxmaxcode;
444 db->maxbits = bits;
446 return (void *) db;
466 struct bsd_db *db = state;
471 || (BSD_NBITS(options[2]) != db->maxbits)
472 || (decomp && db->lens == NULL))
482 db->lens[indx] = 1;
487 indx = db->hsize;
490 db->dict[indx].codem1 = BADCODEM1;
491 db->dict[indx].cptr = 0;
494 db->unit = unit;
495 db->mru = 0;
499 db->debug = 1;
501 bsd_reset(db);
527 static unsigned short *lens_ptr(struct bsd_db *db, int idx)
529 if ((unsigned int) idx > (unsigned int) db->maxmaxcode)
534 return lens_ptrx (db, idx);
537 static struct bsd_dict *dict_ptr(struct bsd_db *db, int idx)
539 if ((unsigned int) idx >= (unsigned int) db->hsize)
544 return dict_ptrx (db, idx);
548 #define lens_ptr(db,idx) lens_ptrx(db,idx)
549 #define dict_ptr(db,idx) dict_ptrx(db,idx)
566 struct bsd_db *db;
621 db = (struct bsd_db *) state;
622 hshift = db->hshift;
623 max_ent = db->max_ent;
624 n_bits = db->n_bits;
645 *wptr++ = db->seqno >> 8;
646 *wptr++ = db->seqno;
659 dictp = dict_ptr (db, hval);
679 if (hval >= db->hsize)
681 hval -= db->hsize;
683 dictp = dict_ptr (db, hval);
698 if (max_ent < db->maxmaxcode)
707 db->n_bits = ++n_bits;
715 dictp2 = dict_ptr (db, max_ent + 1);
717 dictp3 = dict_ptr (db, indx);
727 db->max_ent = ++max_ent;
729 if (db->lens)
731 unsigned short *len1 = lens_ptr (db, max_ent);
732 unsigned short *len2 = lens_ptr (db, ent);
741 db->bytes_out += olen - PPP_HDRLEN - BSD_OVHD;
742 db->uncomp_bytes += isize;
743 db->in_count += isize;
744 ++db->uncomp_count;
745 ++db->seqno;
749 ++db->bytes_out; /* must be set before calling bsd_check */
756 if (bsd_check(db))
776 if (max_ent >= mxcode && max_ent < db->maxmaxcode)
778 db->n_bits++;
784 ++db->incomp_count;
785 db->incomp_bytes += isize;
790 ++db->comp_count;
791 db->comp_bytes += olen;
830 struct bsd_db *db;
850 db = (struct bsd_db *) state;
851 max_ent = db->max_ent;
854 n_bits = db->n_bits;
875 if (seq != db->seqno)
877 if (db->debug)
880 db->unit, seq, db->seqno - 1);
885 ++db->seqno;
886 db->bytes_out += ilen;
910 db->in_count += (explen - 3); /* don't count the header */
939 if (db->debug)
941 printk("bsd_decomp%d: bad CLEAR\n", db->unit);
946 bsd_clear(db);
950 if ((incode > max_ent + 2) || (incode > db->maxmaxcode)
953 if (db->debug)
956 db->unit, incode, oldcode);
958 max_ent, explen, db->seqno);
975 codelen = *(lens_ptr (db, finchar));
979 if (db->debug)
981 printk("bsd_decomp%d: ran out of mru\n", db->unit);
998 struct bsd_dict *dictp2 = dict_ptr (db, finchar);
1000 dictp = dict_ptr (db, dictp2->cptr);
1006 printk("bsd_decomp%d: fell off end of chain ", db->unit);
1016 db->unit, incode, finchar);
1034 db->unit, codelen, incode, max_ent);
1051 if (oldcode != CLEAR && max_ent < db->maxmaxcode)
1059 hval = BSD_HASH(oldcode,finchar,db->hshift);
1060 dictp = dict_ptr (db, hval);
1069 if (hval >= db->hsize)
1071 hval -= db->hsize;
1073 dictp = dict_ptr (db, hval);
1083 dictp2 = dict_ptr (db, max_ent + 1);
1085 dictp3 = dict_ptr (db, indx);
1095 db->max_ent = ++max_ent;
1098 lens1 = lens_ptr (db, max_ent);
1099 lens2 = lens_ptr (db, oldcode);
1103 if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
1105 db->n_bits = ++n_bits;
1112 ++db->comp_count;
1113 ++db->uncomp_count;
1114 db->comp_bytes += isize - BSD_OVHD - PPP_HDRLEN;
1115 db->uncomp_bytes += explen;
1117 if (bsd_check(db))
1119 if (db->debug)
1122 db->unit, db->seqno - 1);