Lines Matching refs:db

216 bsd_clear(struct bsd_db *db)  in bsd_clear()  argument
218 db->clear_count++; in bsd_clear()
219 db->max_ent = FIRST-1; in bsd_clear()
220 db->n_bits = BSD_INIT_BITS; in bsd_clear()
221 db->ratio = 0; in bsd_clear()
222 db->bytes_out = 0; in bsd_clear()
223 db->in_count = 0; in bsd_clear()
224 db->checkpoint = CHECK_GAP; in bsd_clear()
243 bsd_check(struct bsd_db *db) in bsd_check() argument
247 if (db->in_count >= db->checkpoint) { in bsd_check()
252 if (db->in_count >= RATIO_MAX || db->bytes_out >= RATIO_MAX) { in bsd_check()
253 db->in_count -= db->in_count/4; in bsd_check()
254 db->bytes_out -= db->bytes_out/4; in bsd_check()
257 db->checkpoint = db->in_count + CHECK_GAP; in bsd_check()
259 if (db->max_ent >= db->maxmaxcode) { in bsd_check()
269 new_ratio = db->in_count << RATIO_SCALE_LOG; in bsd_check()
271 if (db->bytes_out != 0) { in bsd_check()
272 new_ratio /= db->bytes_out; in bsd_check()
275 if (new_ratio < db->ratio || in bsd_check()
277 bsd_clear(db); in bsd_check()
281 db->ratio = new_ratio; in bsd_check()
296 struct bsd_db *db = (struct bsd_db *)state; in bsd_comp_stats() local
299 stats->unc_bytes = db->uncomp_bytes; in bsd_comp_stats()
300 stats->unc_packets = db->uncomp_count; in bsd_comp_stats()
301 stats->comp_bytes = db->comp_bytes; in bsd_comp_stats()
302 stats->comp_packets = db->comp_count; in bsd_comp_stats()
303 stats->inc_bytes = db->incomp_bytes; in bsd_comp_stats()
304 stats->inc_packets = db->incomp_count; in bsd_comp_stats()
305 stats->ratio = db->in_count; in bsd_comp_stats()
307 out = db->bytes_out; in bsd_comp_stats()
328 struct bsd_db *db = (struct bsd_db *)state; in bsd_reset() local
330 if (db->hsize != 0) { in bsd_reset()
331 db->seqno = 0; in bsd_reset()
333 bsd_clear(db); in bsd_reset()
335 db->clear_count = 0; in bsd_reset()
353 struct bsd_db *db; in bsd_alloc() local
410 ilen = newlen = sizeof (*db) + (hsize-1) * sizeof (db->dict[0]); in bsd_alloc()
412 newlen += (maxmaxcode+1) * sizeof (db->lens[0]); in bsd_alloc()
413 db = (struct bsd_db *)kmem_alloc(newlen, KM_NOSLEEP); in bsd_alloc()
414 if (!db) { in bsd_alloc()
418 bzero(db, sizeof (*db) - sizeof (db->dict)); in bsd_alloc()
421 db->lens = NULL; in bsd_alloc()
423 db->lens = (ushort_t *)((caddr_t)db + ilen); in bsd_alloc()
426 db->totlen = newlen; in bsd_alloc()
427 db->hsize = hsize; in bsd_alloc()
428 db->hshift = (uchar_t)hshift; in bsd_alloc()
429 db->maxmaxcode = maxmaxcode; in bsd_alloc()
430 db->maxbits = (uchar_t)bits; in bsd_alloc()
432 return ((void *)db); in bsd_alloc()
441 struct bsd_db *db = (struct bsd_db *)state; in bsd_free() local
443 if (db->hsize != 0) { in bsd_free()
445 db->hsize = 0; in bsd_free()
447 kmem_free(db, db->totlen); in bsd_free()
475 bsd_init(struct bsd_db *db, uchar_t *options, int opt_len, int unit, in bsd_init() argument
480 if (db->hsize == 0 || opt_len < CILEN_BSD_COMPRESS || in bsd_init()
484 BSD_NBITS(options[2]) != db->maxbits || in bsd_init()
485 decomp && db->lens == NULL) { in bsd_init()
494 db->lens[--i] = 1; in bsd_init()
498 i = db->hsize; in bsd_init()
501 db->dict[--i].codem1 = BADCODEM1; in bsd_init()
502 db->dict[i].cptr = 0; in bsd_init()
505 db->unit = unit; in bsd_init()
506 db->hdrlen = hdrlen; in bsd_init()
507 db->mru = (ushort_t)mru; in bsd_init()
510 db->flags |= DS_DEBUG; in bsd_init()
513 bsd_reset(db); in bsd_init()
515 db->flags |= DS_INITDONE; in bsd_init()
555 struct bsd_db *db = (struct bsd_db *)state; in bsd_compress() local
556 int hshift = db->hshift; in bsd_compress()
557 uint_t max_ent = db->max_ent; in bsd_compress()
558 uint_t n_bits = db->n_bits; in bsd_compress()
581 ASSERT(db->flags & DS_INITDONE); in bsd_compress()
629 if (db->hsize == 0) in bsd_compress()
710 *wptr++ = db->seqno >> 8; in bsd_compress()
711 *wptr++ = db->seqno; in bsd_compress()
718 if ((db->flags & DS_TESTOUT) && (db->seqno % 100) == 50) in bsd_compress()
722 ++db->seqno; in bsd_compress()
734 dictp = &db->dict[hval]; in bsd_compress()
759 if (hval >= db->hsize) { in bsd_compress()
760 hval -= db->hsize; in bsd_compress()
761 if (hval >= db->hsize) { in bsd_compress()
762 if (db->flags & DS_DEBUG) { in bsd_compress()
766 db->unit); in bsd_compress()
773 dictp = &db->dict[hval]; in bsd_compress()
796 if (max_ent < db->maxmaxcode) { in bsd_compress()
803 db->n_bits = ++n_bits; in bsd_compress()
810 dictp2 = &db->dict[max_ent+1]; in bsd_compress()
812 if (db->dict[dictp2->cptr].codem1 == max_ent) { in bsd_compress()
813 db->dict[dictp2->cptr].codem1 = BADCODEM1; in bsd_compress()
820 db->max_ent = ++max_ent; in bsd_compress()
833 db->bytes_out += olen; in bsd_compress()
834 db->in_count += ilen; in bsd_compress()
836 if (bsd_check(db)) { in bsd_compress()
852 if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) { in bsd_compress()
853 db->n_bits++; in bsd_compress()
856 db->uncomp_bytes += ilen; in bsd_compress()
857 ++db->uncomp_count; in bsd_compress()
868 ++db->incomp_count; in bsd_compress()
869 db->incomp_bytes += ilen; in bsd_compress()
879 ++db->comp_count; in bsd_compress()
880 db->comp_bytes += olen + BSD_OVHD; in bsd_compress()
900 struct bsd_db *db = (struct bsd_db *)state; in bsd_incomp() local
901 uint_t hshift = db->hshift; in bsd_incomp()
902 uint_t max_ent = db->max_ent; in bsd_incomp()
903 uint_t n_bits = db->n_bits; in bsd_incomp()
915 ASSERT(db->flags & DS_INITDONE); in bsd_incomp()
917 if (db->hsize == 0) in bsd_incomp()
946 db->seqno++; in bsd_incomp()
969 dictp = &db->dict[hval]; in bsd_incomp()
989 if (hval >= db->hsize) { in bsd_incomp()
990 hval -= db->hsize; in bsd_incomp()
991 if (hval >= db->hsize) { in bsd_incomp()
992 if (db->flags & DS_DEBUG) { in bsd_incomp()
996 db->unit); in bsd_incomp()
1002 dictp = &db->dict[hval]; in bsd_incomp()
1017 if (max_ent < db->maxmaxcode) { in bsd_incomp()
1024 db->n_bits = ++n_bits; in bsd_incomp()
1031 dictp2 = &db->dict[max_ent+1]; in bsd_incomp()
1032 if (db->dict[dictp2->cptr].codem1 == max_ent) { in bsd_incomp()
1033 db->dict[dictp2->cptr].codem1 = in bsd_incomp()
1041 db->max_ent = ++max_ent; in bsd_incomp()
1042 db->lens[max_ent] = db->lens[ent]+1; in bsd_incomp()
1051 db->bytes_out += bitno/8; in bsd_incomp()
1052 db->in_count += ilen; in bsd_incomp()
1054 (void) bsd_check(db); in bsd_incomp()
1056 ++db->incomp_count; in bsd_incomp()
1057 db->incomp_bytes += ilen; in bsd_incomp()
1058 ++db->uncomp_count; in bsd_incomp()
1059 db->uncomp_bytes += ilen; in bsd_incomp()
1065 if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) { in bsd_incomp()
1066 db->n_bits++; in bsd_incomp()
1095 struct bsd_db *db = (struct bsd_db *)state; in bsd_decompress() local
1096 uint_t max_ent = db->max_ent; in bsd_decompress()
1099 uint_t n_bits = db->n_bits; in bsd_decompress()
1125 ASSERT(db->flags & DS_INITDONE); in bsd_decompress()
1161 if (db->flags & DS_DEBUG) { in bsd_decompress()
1163 db->unit); in bsd_decompress()
1174 if ((db->flags & DS_TESTIN) && (db->seqno % 300) == 101) in bsd_decompress()
1181 if (db->hsize == 0 || seq != db->seqno++) { in bsd_decompress()
1183 if (db->flags & DS_DEBUG) { in bsd_decompress()
1185 "expected %d\n", db->unit, seq, db->seqno - 1); in bsd_decompress()
1194 if ((dmsg = allocb(DECOMP_CHUNK + db->hdrlen, BPRI_MED)) == NULL) { in bsd_decompress()
1196 if (db->flags & DS_DEBUG) { in bsd_decompress()
1199 db->unit); in bsd_decompress()
1210 blockctr = ((db->mru + 32 + DECOMP_CHUNK - 1) / DECOMP_CHUNK) + 5; in bsd_decompress()
1213 dmsg->b_wptr += db->hdrlen; in bsd_decompress()
1264 if (db->flags & DS_DEBUG) { in bsd_decompress()
1267 db->unit); in bsd_decompress()
1273 bsd_clear(db); in bsd_decompress()
1277 db->comp_bytes += ilen; in bsd_decompress()
1288 incode > db->maxmaxcode || in bsd_decompress()
1294 if (db->flags & DS_DEBUG) { in bsd_decompress()
1297 "oldcode=0x%x ", db->unit, incode, in bsd_decompress()
1309 codelen = db->lens[finchar]; in bsd_decompress()
1321 db->in_count += dlen; in bsd_decompress()
1333 if (db->flags & DS_DEBUG) { in bsd_decompress()
1337 db->unit, in bsd_decompress()
1354 dictp = &db->dict[db->dict[finchar].cptr]; in bsd_decompress()
1369 db->in_count++; in bsd_decompress()
1389 if (oldcode != CLEAR && max_ent < db->maxmaxcode) { in bsd_decompress()
1396 hval = BSD_HASH(oldcode, finchar, db->hshift); in bsd_decompress()
1398 dictp = &db->dict[hval]; in bsd_decompress()
1409 if (hval >= db->hsize) { in bsd_decompress()
1410 hval -= db->hsize; in bsd_decompress()
1411 if (hval >= db->hsize) { in bsd_decompress()
1414 if (db->flags & in bsd_decompress()
1417 db->unit); in bsd_decompress()
1424 dictp = &db->dict[hval]; in bsd_decompress()
1433 dictp2 = &db->dict[max_ent+1]; in bsd_decompress()
1435 if (db->dict[dictp2->cptr].codem1 == max_ent) { in bsd_decompress()
1436 db->dict[dictp2->cptr].codem1 = BADCODEM1; in bsd_decompress()
1443 db->max_ent = ++max_ent; in bsd_decompress()
1444 db->lens[max_ent] = db->lens[oldcode]+1; in bsd_decompress()
1450 max_ent < db->maxmaxcode) { in bsd_decompress()
1452 db->n_bits = ++n_bits; in bsd_decompress()
1462 db->in_count += dlen; in bsd_decompress()
1464 db->bytes_out += ilen; in bsd_decompress()
1470 if (bsd_check(db) && (db->flags & DS_DEBUG)) { in bsd_decompress()
1473 db->unit); in bsd_decompress()
1476 ++db->comp_count; in bsd_decompress()
1477 db->comp_bytes += ilen + BSD_OVHD; in bsd_decompress()
1478 ++db->uncomp_count; in bsd_decompress()
1479 db->uncomp_bytes += outlen; in bsd_decompress()