Lines Matching refs:hashp
82 ((u_int16_t *)(P))[1] = hashp->BSIZE - 3 * sizeof(u_int16_t); \
83 ((u_int16_t *)(P))[2] = hashp->BSIZE; \
122 __delpair(HTAB *hashp, BUFHEAD *bufp, int ndx) in __delpair() argument
131 return (__big_delete(hashp, bufp)); in __delpair()
135 newoff = hashp->BSIZE; in __delpair()
155 if (ndx == hashp->cndx) { in __delpair()
161 hashp->cndx -= 2; in __delpair()
168 hashp->NKEYS--; in __delpair()
179 __split_page(HTAB *hashp, u_int32_t obucket, u_int32_t nbucket) in __split_page() argument
189 copyto = (u_int16_t)hashp->BSIZE; in __split_page()
190 off = (u_int16_t)hashp->BSIZE; in __split_page()
191 old_bufp = __get_buf(hashp, obucket, NULL, 0); in __split_page()
194 new_bufp = __get_buf(hashp, nbucket, NULL, 0); in __split_page()
208 retval = ugly_split(hashp, obucket, old_bufp, new_bufp, in __split_page()
218 if (__call_hash(hashp, key.data, key.size) == obucket) { in __split_page()
273 ugly_split(HTAB *hashp, in ugly_split() argument
301 if (__big_split(hashp, old_bufp, in ugly_split()
329 bufp = __get_buf(hashp, ov_addr, bufp, 0); in ugly_split()
335 scopyto = hashp->BSIZE; in ugly_split()
339 __free_ovflpage(hashp, last_bfp); in ugly_split()
343 off = hashp->BSIZE; in ugly_split()
352 if (__call_hash(hashp, key.data, key.size) == obucket) { in ugly_split()
358 __add_ovflpage(hashp, old_bufp); in ugly_split()
371 __add_ovflpage(hashp, new_bufp); in ugly_split()
382 __free_ovflpage(hashp, last_bfp); in ugly_split()
394 __addel(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val) in __addel() argument
408 bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); in __addel()
422 bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); in __addel()
433 bufp = __add_ovflpage(hashp, bufp); in __addel()
441 if (__big_insert(hashp, bufp, key, val)) in __addel()
450 hashp->NKEYS++; in __addel()
452 (hashp->NKEYS / (hashp->MAX_BUCKET + 1) > hashp->FFACTOR)) in __addel()
453 return (__expand_table(hashp)); in __addel()
464 __add_ovflpage(HTAB *hashp, BUFHEAD *bufp) in __add_ovflpage() argument
473 if (hashp->FFACTOR == DEF_FFACTOR) { in __add_ovflpage()
474 hashp->FFACTOR = sp[0] >> 1; in __add_ovflpage()
475 if (hashp->FFACTOR < MIN_FFACTOR) in __add_ovflpage()
476 hashp->FFACTOR = MIN_FFACTOR; in __add_ovflpage()
479 ovfl_num = overflow_page(hashp); in __add_ovflpage()
484 if (!ovfl_num || !(bufp->ovfl = __get_buf(hashp, ovfl_num, bufp, 1))) in __add_ovflpage()
514 __get_page(HTAB *hashp, char *p, u_int32_t bucket, int is_bucket, int is_disk, in __get_page() argument
520 fd = hashp->fp; in __get_page()
521 size = hashp->BSIZE; in __get_page()
531 if ((rsize = pread(fd, p, size, (off_t)page << hashp->BSHIFT)) == -1) in __get_page()
544 if (hashp->LORDER != BYTE_ORDER) { in __get_page()
548 max = hashp->BSIZE >> 2; /* divide by 4 */ in __get_page()
569 __put_page(HTAB *hashp, char *p, u_int32_t bucket, int is_bucket, int is_bitmap) in __put_page() argument
575 size = hashp->BSIZE; in __put_page()
576 if ((hashp->fp == -1) && open_temp(hashp)) in __put_page()
578 fd = hashp->fp; in __put_page()
580 if (hashp->LORDER != BYTE_ORDER) { in __put_page()
585 max = hashp->BSIZE >> 2; /* divide by 4 */ in __put_page()
600 if ((wsize = pwrite(fd, p, size, (off_t)page << hashp->BSHIFT)) == -1) in __put_page()
616 __ibitmap(HTAB *hashp, int pnum, int nbits, int ndx) in __ibitmap() argument
621 if ((ip = (u_int32_t *)malloc(hashp->BSIZE)) == NULL) in __ibitmap()
623 hashp->nmaps++; in __ibitmap()
628 hashp->BSIZE - clearbytes); in __ibitmap()
631 hashp->BITMAPS[ndx] = (u_int16_t)pnum; in __ibitmap()
632 hashp->mapp[ndx] = ip; in __ibitmap()
651 overflow_page(HTAB *hashp) in overflow_page() argument
660 splitnum = hashp->OVFL_POINT; in overflow_page()
661 max_free = hashp->SPARES[splitnum]; in overflow_page()
663 free_page = (max_free - 1) >> (hashp->BSHIFT + BYTE_SHIFT); in overflow_page()
664 free_bit = (max_free - 1) & ((hashp->BSIZE << BYTE_SHIFT) - 1); in overflow_page()
667 first_page = hashp->LAST_FREED >>(hashp->BSHIFT + BYTE_SHIFT); in overflow_page()
669 if (!(freep = (u_int32_t *)hashp->mapp[i]) && in overflow_page()
670 !(freep = fetch_bitmap(hashp, i))) in overflow_page()
675 in_use_bits = (hashp->BSIZE << BYTE_SHIFT) - 1; in overflow_page()
678 bit = hashp->LAST_FREED & in overflow_page()
679 ((hashp->BSIZE << BYTE_SHIFT) - 1); in overflow_page()
692 hashp->LAST_FREED = hashp->SPARES[splitnum]; in overflow_page()
693 hashp->SPARES[splitnum]++; in overflow_page()
694 offset = hashp->SPARES[splitnum] - in overflow_page()
695 (splitnum ? hashp->SPARES[splitnum - 1] : 0); in overflow_page()
704 hashp->OVFL_POINT = splitnum; in overflow_page()
705 hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; in overflow_page()
706 hashp->SPARES[splitnum-1]--; in overflow_page()
711 if (free_bit == (hashp->BSIZE << BYTE_SHIFT) - 1) { in overflow_page()
729 if (__ibitmap(hashp, in overflow_page()
732 hashp->SPARES[splitnum]++; in overflow_page()
744 hashp->OVFL_POINT = splitnum; in overflow_page()
745 hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; in overflow_page()
746 hashp->SPARES[splitnum-1]--; in overflow_page()
778 bit = 1 + bit + (i * (hashp->BSIZE << BYTE_SHIFT)); in overflow_page()
779 if (bit >= hashp->LAST_FREED) in overflow_page()
780 hashp->LAST_FREED = bit - 1; in overflow_page()
783 for (i = 0; (i < splitnum) && (bit > hashp->SPARES[i]); i++); in overflow_page()
784 offset = (i ? bit - hashp->SPARES[i - 1] : bit); in overflow_page()
804 __free_ovflpage(HTAB *hashp, BUFHEAD *obufp) in __free_ovflpage() argument
817 (ndx ? hashp->SPARES[ndx - 1] : 0) + (addr & SPLITMASK) - 1; in __free_ovflpage()
818 if (bit_address < hashp->LAST_FREED) in __free_ovflpage()
819 hashp->LAST_FREED = bit_address; in __free_ovflpage()
820 free_page = (bit_address >> (hashp->BSHIFT + BYTE_SHIFT)); in __free_ovflpage()
821 free_bit = bit_address & ((hashp->BSIZE << BYTE_SHIFT) - 1); in __free_ovflpage()
823 if (!(freep = hashp->mapp[free_page])) in __free_ovflpage()
824 freep = fetch_bitmap(hashp, free_page); in __free_ovflpage()
839 __reclaim_buf(hashp, obufp); in __free_ovflpage()
848 open_temp(HTAB *hashp) in open_temp() argument
866 if ((hashp->fp = mkostemp(path, O_CLOEXEC)) != -1) in open_temp()
869 return (hashp->fp != -1 ? 0 : -1); in open_temp()
902 fetch_bitmap(HTAB *hashp, int ndx) in fetch_bitmap() argument
904 if (ndx >= hashp->nmaps) in fetch_bitmap()
906 if ((hashp->mapp[ndx] = (u_int32_t *)malloc(hashp->BSIZE)) == NULL) in fetch_bitmap()
908 if (__get_page(hashp, in fetch_bitmap()
909 (char *)hashp->mapp[ndx], hashp->BITMAPS[ndx], 0, 1, 1)) { in fetch_bitmap()
910 free(hashp->mapp[ndx]); in fetch_bitmap()
913 return (hashp->mapp[ndx]); in fetch_bitmap()
924 bufp = __get_buf(hashp, addr, NULL, 0); in print_chain()
930 bufp = __get_buf(hashp, (int)oaddr, bufp, 0); in print_chain()