Lines Matching defs:pagep

101 	if (!cursorp->pagep) {
103 cursorp->pagep =
106 if (!cursorp->pagep) {
111 cursorp->pgno = ADDR(cursorp->pagep);
115 cursorp->pagep =
117 if (!cursorp->pagep) {
123 FREESPACE(cursorp->pagep) > item_info->seek_size)
126 if (cursorp->pgndx == NUM_ENT(cursorp->pagep)) {
128 if (NEXT_PGNO(cursorp->pagep) == INVALID_PGNO) {
132 next_pgno = NEXT_PGNO(cursorp->pagep);
134 __put_page(hashp, cursorp->pagep, A_RAW, 0);
135 cursorp->pagep = __get_page(hashp, next_pgno, A_RAW);
136 if (!cursorp->pagep) {
142 if (KEY_OFF(cursorp->pagep, cursorp->pgndx) != BIGPAIR) {
143 if ((i = prev_realkey(cursorp->pagep, cursorp->pgndx)) ==
146 KEY_OFF(cursorp->pagep, cursorp->pgndx);
148 key->size = DATA_OFF(cursorp->pagep, i) -
149 KEY_OFF(cursorp->pagep, cursorp->pgndx);
156 val->size = KEY_OFF(cursorp->pagep, cursorp->pgndx) -
157 DATA_OFF(cursorp->pagep, cursorp->pgndx);
158 key->data = KEY(cursorp->pagep, cursorp->pgndx);
159 val->data = DATA(cursorp->pagep, cursorp->pgndx);
164 item_info->key_off = KEY_OFF(cursorp->pagep, cursorp->pgndx);
165 item_info->data_off = DATA_OFF(cursorp->pagep, cursorp->pgndx);
176 if (cursorp->pagep)
177 __put_page(hashp, cursorp->pagep, A_RAW, 0);
178 cursorp->pagep = NULL;
191 if (cursorp->pagep)
192 __put_page(hashp, cursorp->pagep, A_RAW, 0);
193 cursorp->pagep = NULL;
241 u_int16_t *pagep, n, off;
243 pagep = (PAGE16 *)p;
246 n = NUM_ENT(pagep);
247 off = OFFSET(pagep) - key->size + 1;
249 KEY_OFF(pagep, n) = off;
253 DATA_OFF(pagep, n) = off;
256 NUM_ENT(pagep) = n + 1;
257 OFFSET(pagep) = off - 1;
266 next_realkey(PAGE16 * pagep, indx_t n)
268 next_realkey(pagep, n)
269 PAGE16 *pagep;
275 for (i = n + 1; i < NUM_ENT(pagep); i++)
276 if (KEY_OFF(pagep, i) != BIGPAIR)
287 prev_realkey(PAGE16 * pagep, indx_t n)
289 prev_realkey(pagep, n)
290 PAGE16 *pagep;
298 if (KEY_OFF(pagep, i) != BIGPAIR)
314 PAGE16 *pagep;
322 if (!cursorp->pagep) {
323 pagep = __get_page(hashp, cursorp->pgno, A_RAW);
324 if (!pagep)
332 pagep = cursorp->pagep;
334 assert(ADDR(pagep) == cursorp->pgno);
337 if (KEY_OFF(pagep, ndx) == BIGPAIR) {
339 __big_delete(hashp, pagep, ndx);
347 check_ndx >= 0 && KEY_OFF(pagep, check_ndx) == BIGPAIR;
350 delta = hashp->hdr.bsize - DATA_OFF(pagep, ndx);
353 DATA_OFF(pagep, check_ndx) - DATA_OFF(pagep, ndx);
360 if (ndx != NUM_ENT(pagep) - 1) {
365 src = (u_int8_t *)pagep + OFFSET(pagep) + 1;
370 len = DATA_OFF(pagep, ndx) - (OFFSET(pagep) + 1);
377 (u_int8_t *)pagep + hashp->hdr.bsize - len;
379 dest = (u_int8_t *)pagep +
380 DATA_OFF(pagep, (check_ndx)) - len;
386 for (n = ndx; n < NUM_ENT(pagep) - 1; n++)
387 if (KEY_OFF(pagep, (n + 1)) != BIGPAIR) {
388 next_key = next_realkey(pagep, n);
392 KEY_OFF(pagep, n) = KEY_OFF(pagep, (n + 1)) + delta;
393 DATA_OFF(pagep, n) = DATA_OFF(pagep, (n + 1)) + delta;
395 KEY_OFF(pagep, n) = KEY_OFF(pagep, (n + 1));
396 DATA_OFF(pagep, n) = DATA_OFF(pagep, (n + 1));
400 OFFSET(pagep) = OFFSET(pagep) + delta;
401 NUM_ENT(pagep) = NUM_ENT(pagep) - 1;
406 if (TYPE(pagep) == HASH_OVFLPAGE && NUM_ENT(pagep) == 0) {
415 to_find = ADDR(pagep);
416 empty_page = pagep;
418 pagep = __get_page(hashp, item_info->bucket, A_BUCKET);
419 if (!pagep)
421 while (NEXT_PGNO(pagep) != to_find) {
422 next_pgno = NEXT_PGNO(pagep);
426 __put_page(hashp, pagep, A_RAW, 0);
427 pagep = __get_page(hashp, next_pgno, A_RAW);
428 if (!pagep)
433 * At this point, pagep should point to the page before the
436 NEXT_PGNO(pagep) = link_page;
438 item_info->pgno = ADDR(pagep);
439 item_info->pgndx = NUM_ENT(pagep);
440 item_info->seek_found_page = ADDR(pagep);
444 __put_page(hashp, pagep, A_RAW, 1);
546 PAGE16 *pagep;
552 pagep = __get_page(hashp,
555 if (!pagep)
559 while (NUM_ENT(pagep) && NEXT_PGNO(pagep) != INVALID_PGNO) {
564 if (ISBIG(PAIRSIZE(key, val), hashp) && BIGPAIRFITS(pagep))
566 if (PAIRFITS(pagep, key, val))
568 next_pgno = NEXT_PGNO(pagep);
569 __put_page(hashp, pagep, A_RAW, 0);
570 pagep = (PAGE16 *)__get_page(hashp, next_pgno, A_RAW);
571 if (!pagep)
576 !BIGPAIRFITS(pagep)) ||
578 !PAIRFITS(pagep, key, val))) {
580 pagep = __add_ovflpage(hashp, pagep);
581 if (!pagep)
585 !BIGPAIRFITS(pagep)) ||
587 !PAIRFITS(pagep, key, val))) {
588 __put_page(hashp, pagep, A_RAW, 0);
596 if (__big_insert(hashp, pagep, key, val))
599 putpair((PAGE8 *)pagep, key, val);
609 item_info->pgno = ADDR(pagep);
616 __put_page(hashp, pagep, A_RAW, 1);
653 PAGE16 *pagep;
656 pagep = __get_page(hashp, item_info->bucket, A_BUCKET);
657 if (!pagep)
669 while (NUM_ENT(pagep) && (NEXT_PGNO(pagep) != INVALID_PGNO)) {
670 if (BIGPAIRFITS(pagep))
672 next_pgno = NEXT_PGNO(pagep);
673 __put_page(hashp, pagep, A_RAW, 0);
674 pagep = __get_page(hashp, next_pgno, A_RAW);
675 if (!pagep)
678 if (!BIGPAIRFITS(pagep)) {
679 pagep = __add_ovflpage(hashp, pagep);
680 if (!pagep)
683 assert(BIGPAIRFITS(pagep));
686 KEY_OFF(pagep, NUM_ENT(pagep)) = BIGPAIR;
687 DATA_OFF(pagep, NUM_ENT(pagep)) = big_pgno;
688 NUM_ENT(pagep) = NUM_ENT(pagep) + 1;
690 __put_page(hashp, pagep, A_RAW, 1);
702 __add_ovflpage(hashp, pagep)
704 PAGE16 *pagep;
711 hashp->hdr.ffactor = NUM_ENT(pagep) >> 1;
725 NEXT_PGNO(pagep) = (db_pgno_t)OADDR_TO_PAGE(ovfl_num);
728 __put_page(hashp, pagep, A_RAW, 1);
744 __add_bigpage(HTAB * hashp, PAGE16 * pagep, indx_t ndx, const u_int8_t
747 __add_bigpage(hashp, pagep, ndx, is_basepage)
749 PAGE16 *pagep;
768 KEY_OFF(pagep, ndx) = BIGPAIR;
769 DATA_OFF(pagep, ndx) = (indx_t)ovfl_num;
771 NEXT_PGNO(pagep) = ADDR(new_pagep);
773 __put_page(hashp, pagep, A_RAW, 1);
785 page_init(HTAB * hashp, PAGE16 * pagep, db_pgno_t pgno, u_int8_t type)
787 page_init(hashp, pagep, pgno, type)
789 PAGE16 *pagep;
794 NUM_ENT(pagep) = 0;
795 PREV_PGNO(pagep) = NEXT_PGNO(pagep) = INVALID_PGNO;
796 TYPE(pagep) = type;
797 OFFSET(pagep) = hashp->hdr.bsize - 1;
799 * Note: since in the current version ADDR(pagep) == PREV_PGNO(pagep),
800 * make sure that ADDR(pagep) is set after resetting PREV_PGNO(pagep).
801 * We reset PREV_PGNO(pagep) just in case the macros are changed.
803 ADDR(pagep) = pgno;
815 PAGE16 *pagep;
829 pagep = mpool_new(hashp->mp, &paddr, MPOOL_PAGE_REQUEST);
830 if (!pagep)
837 page_init(hashp, pagep, paddr, HASH_PAGE);
839 __put_page(hashp, pagep, addr_type, 1);
845 __delete_page(hashp, pagep, page_type)
847 PAGE16 *pagep;
851 __free_ovflpage(hashp, pagep);
852 return (mpool_delete(hashp->mp, pagep));
875 PAGE16 *pagep;
878 pagep = (PAGE16 *)page;
891 if (NUM_ENT(pagep) == 0 && NEXT_PGNO(pagep) == 0 &&
894 page_init(hashp, pagep, pgno, HASH_PAGE);
903 M_32_SWAP(((int32_t *)pagep)[i]);
905 swap_page_header_in(pagep);
915 PAGE16 *pagep;
918 pagep = (PAGE16 *)page;
934 M_32_SWAP(((int32_t *)pagep)[i]);
936 swap_page_header_out(pagep);
946 __put_page(hashp, pagep, addr_type, is_dirty)
948 PAGE16 *pagep;
953 ((BKT *)((char *)pagep - sizeof(BKT)))->pgno, -1);
956 return (mpool_put(hashp->mp, pagep, (is_dirty ? MPOOL_DIRTY : 0)));
971 PAGE16 *pagep;
986 pagep = (PAGE16 *)mpool_get(hashp->mp, paddr, 0);
992 assert(ADDR(pagep) == paddr || ADDR(pagep) == 0 ||
996 return (pagep);
1000 swap_page_header_in(pagep)
1001 PAGE16 *pagep;
1007 M_32_SWAP(PREV_PGNO(pagep));
1008 M_32_SWAP(NEXT_PGNO(pagep));
1009 M_16_SWAP(NUM_ENT(pagep));
1010 M_16_SWAP(OFFSET(pagep));
1012 for (i = 0; i < NUM_ENT(pagep); i++) {
1013 M_16_SWAP(KEY_OFF(pagep, i));
1014 M_16_SWAP(DATA_OFF(pagep, i));
1019 swap_page_header_out(pagep)
1020 PAGE16 *pagep;
1024 for (i = 0; i < NUM_ENT(pagep); i++) {
1025 M_16_SWAP(KEY_OFF(pagep, i));
1026 M_16_SWAP(DATA_OFF(pagep, i))
1031 M_32_SWAP(PREV_PGNO(pagep));
1032 M_32_SWAP(NEXT_PGNO(pagep));
1033 M_16_SWAP(NUM_ENT(pagep));
1034 M_16_SWAP(OFFSET(pagep));
1310 __free_ovflpage(hashp, pagep)
1312 PAGE16 *pagep;
1318 addr = page_to_oaddr(hashp, ADDR(pagep));