Lines Matching refs:hashp

86 	((u_int16_t *)(P))[1] = hashp->BSIZE - 3 * sizeof(u_int16_t); \
87 ((u_int16_t *)(P))[2] = hashp->BSIZE; \
126 __delpair(HTAB *hashp, BUFHEAD *bufp, int ndx) in __delpair() argument
135 return (__big_delete(hashp, bufp)); in __delpair()
139 newoff = hashp->BSIZE; in __delpair()
159 if (ndx == hashp->cndx) { in __delpair()
165 hashp->cndx -= 2; in __delpair()
172 hashp->NKEYS--; in __delpair()
183 __split_page(HTAB *hashp, u_int32_t obucket, u_int32_t nbucket) in __split_page() argument
193 copyto = (u_int16_t)hashp->BSIZE; in __split_page()
194 off = (u_int16_t)hashp->BSIZE; in __split_page()
195 old_bufp = __get_buf(hashp, obucket, NULL, 0); in __split_page()
198 new_bufp = __get_buf(hashp, nbucket, NULL, 0); in __split_page()
212 retval = ugly_split(hashp, obucket, old_bufp, new_bufp, in __split_page()
222 if (__call_hash(hashp, key.data, key.size) == obucket) { in __split_page()
277 ugly_split(HTAB *hashp, in ugly_split() argument
305 if (__big_split(hashp, old_bufp, in ugly_split()
333 bufp = __get_buf(hashp, ov_addr, bufp, 0); in ugly_split()
339 scopyto = hashp->BSIZE; in ugly_split()
343 __free_ovflpage(hashp, last_bfp); in ugly_split()
347 off = hashp->BSIZE; in ugly_split()
356 if (__call_hash(hashp, key.data, key.size) == obucket) { in ugly_split()
362 __add_ovflpage(hashp, old_bufp); in ugly_split()
375 __add_ovflpage(hashp, new_bufp); in ugly_split()
386 __free_ovflpage(hashp, last_bfp); in ugly_split()
398 __addel(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val) in __addel() argument
412 bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); in __addel()
426 bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); in __addel()
437 bufp = __add_ovflpage(hashp, bufp); in __addel()
445 if (__big_insert(hashp, bufp, key, val)) in __addel()
454 hashp->NKEYS++; in __addel()
456 (hashp->NKEYS / (hashp->MAX_BUCKET + 1) > hashp->FFACTOR)) in __addel()
457 return (__expand_table(hashp)); in __addel()
468 __add_ovflpage(HTAB *hashp, BUFHEAD *bufp) in __add_ovflpage() argument
477 if (hashp->FFACTOR == DEF_FFACTOR) { in __add_ovflpage()
478 hashp->FFACTOR = sp[0] >> 1; in __add_ovflpage()
479 if (hashp->FFACTOR < MIN_FFACTOR) in __add_ovflpage()
480 hashp->FFACTOR = MIN_FFACTOR; in __add_ovflpage()
483 ovfl_num = overflow_page(hashp); in __add_ovflpage()
488 if (!ovfl_num || !(bufp->ovfl = __get_buf(hashp, ovfl_num, bufp, 1))) in __add_ovflpage()
518 __get_page(HTAB *hashp, char *p, u_int32_t bucket, int is_bucket, int is_disk, in __get_page() argument
524 fd = hashp->fp; in __get_page()
525 size = hashp->BSIZE; in __get_page()
535 if ((rsize = pread(fd, p, size, (off_t)page << hashp->BSHIFT)) == -1) in __get_page()
548 if (hashp->LORDER != BYTE_ORDER) { in __get_page()
552 max = hashp->BSIZE >> 2; /* divide by 4 */ in __get_page()
573 __put_page(HTAB *hashp, char *p, u_int32_t bucket, int is_bucket, int is_bitmap) in __put_page() argument
579 size = hashp->BSIZE; in __put_page()
580 if ((hashp->fp == -1) && open_temp(hashp)) in __put_page()
582 fd = hashp->fp; in __put_page()
584 if (hashp->LORDER != BYTE_ORDER) { in __put_page()
589 max = hashp->BSIZE >> 2; /* divide by 4 */ in __put_page()
604 if ((wsize = pwrite(fd, p, size, (off_t)page << hashp->BSHIFT)) == -1) in __put_page()
620 __ibitmap(HTAB *hashp, int pnum, int nbits, int ndx) in __ibitmap() argument
625 if ((ip = (u_int32_t *)malloc(hashp->BSIZE)) == NULL) in __ibitmap()
627 hashp->nmaps++; in __ibitmap()
632 hashp->BSIZE - clearbytes); in __ibitmap()
635 hashp->BITMAPS[ndx] = (u_int16_t)pnum; in __ibitmap()
636 hashp->mapp[ndx] = ip; in __ibitmap()
655 overflow_page(HTAB *hashp) in overflow_page() argument
664 splitnum = hashp->OVFL_POINT; in overflow_page()
665 max_free = hashp->SPARES[splitnum]; in overflow_page()
667 free_page = (max_free - 1) >> (hashp->BSHIFT + BYTE_SHIFT); in overflow_page()
668 free_bit = (max_free - 1) & ((hashp->BSIZE << BYTE_SHIFT) - 1); in overflow_page()
671 first_page = hashp->LAST_FREED >>(hashp->BSHIFT + BYTE_SHIFT); in overflow_page()
673 if (!(freep = (u_int32_t *)hashp->mapp[i]) && in overflow_page()
674 !(freep = fetch_bitmap(hashp, i))) in overflow_page()
679 in_use_bits = (hashp->BSIZE << BYTE_SHIFT) - 1; in overflow_page()
682 bit = hashp->LAST_FREED & in overflow_page()
683 ((hashp->BSIZE << BYTE_SHIFT) - 1); in overflow_page()
696 hashp->LAST_FREED = hashp->SPARES[splitnum]; in overflow_page()
697 hashp->SPARES[splitnum]++; in overflow_page()
698 offset = hashp->SPARES[splitnum] - in overflow_page()
699 (splitnum ? hashp->SPARES[splitnum - 1] : 0); in overflow_page()
708 hashp->OVFL_POINT = splitnum; in overflow_page()
709 hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; in overflow_page()
710 hashp->SPARES[splitnum-1]--; in overflow_page()
715 if (free_bit == (hashp->BSIZE << BYTE_SHIFT) - 1) { in overflow_page()
733 if (__ibitmap(hashp, in overflow_page()
736 hashp->SPARES[splitnum]++; in overflow_page()
748 hashp->OVFL_POINT = splitnum; in overflow_page()
749 hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; in overflow_page()
750 hashp->SPARES[splitnum-1]--; in overflow_page()
782 bit = 1 + bit + (i * (hashp->BSIZE << BYTE_SHIFT)); in overflow_page()
783 if (bit >= hashp->LAST_FREED) in overflow_page()
784 hashp->LAST_FREED = bit - 1; in overflow_page()
787 for (i = 0; (i < splitnum) && (bit > hashp->SPARES[i]); i++); in overflow_page()
788 offset = (i ? bit - hashp->SPARES[i - 1] : bit); in overflow_page()
808 __free_ovflpage(HTAB *hashp, BUFHEAD *obufp) in __free_ovflpage() argument
821 (ndx ? hashp->SPARES[ndx - 1] : 0) + (addr & SPLITMASK) - 1; in __free_ovflpage()
822 if (bit_address < hashp->LAST_FREED) in __free_ovflpage()
823 hashp->LAST_FREED = bit_address; in __free_ovflpage()
824 free_page = (bit_address >> (hashp->BSHIFT + BYTE_SHIFT)); in __free_ovflpage()
825 free_bit = bit_address & ((hashp->BSIZE << BYTE_SHIFT) - 1); in __free_ovflpage()
827 if (!(freep = hashp->mapp[free_page])) in __free_ovflpage()
828 freep = fetch_bitmap(hashp, free_page); in __free_ovflpage()
843 __reclaim_buf(hashp, obufp); in __free_ovflpage()
852 open_temp(HTAB *hashp) in open_temp() argument
871 if ((hashp->fp = mkostemp(path, O_CLOEXEC)) != -1) in open_temp()
874 return (hashp->fp != -1 ? 0 : -1); in open_temp()
907 fetch_bitmap(HTAB *hashp, int ndx) in fetch_bitmap() argument
909 if (ndx >= hashp->nmaps) in fetch_bitmap()
911 if ((hashp->mapp[ndx] = (u_int32_t *)malloc(hashp->BSIZE)) == NULL) in fetch_bitmap()
913 if (__get_page(hashp, in fetch_bitmap()
914 (char *)hashp->mapp[ndx], hashp->BITMAPS[ndx], 0, 1, 1)) { in fetch_bitmap()
915 free(hashp->mapp[ndx]); in fetch_bitmap()
918 return (hashp->mapp[ndx]); in fetch_bitmap()
929 bufp = __get_buf(hashp, addr, NULL, 0); in print_chain()
935 bufp = __get_buf(hashp, (int)oaddr, bufp, 0); in print_chain()