-: 0:Source:bt_page.c -: 0:Graph:/var/tsitkova/Sources/v10/trunk/src/plugins/kdb/db2/libdb2/btree/bt_page.so.gcno -: 0:Data:/var/tsitkova/Sources/v10/trunk/src/plugins/kdb/db2/libdb2/btree/bt_page.so.gcda -: 0:Runs:1656 -: 0:Programs:2 -: 1:/*- -: 2: * Copyright (c) 1990, 1993, 1994 -: 3: * The Regents of the University of California. All rights reserved. -: 4: * -: 5: * Redistribution and use in source and binary forms, with or without -: 6: * modification, are permitted provided that the following conditions -: 7: * are met: -: 8: * 1. Redistributions of source code must retain the above copyright -: 9: * notice, this list of conditions and the following disclaimer. -: 10: * 2. Redistributions in binary form must reproduce the above copyright -: 11: * notice, this list of conditions and the following disclaimer in the -: 12: * documentation and/or other materials provided with the distribution. -: 13: * 3. All advertising materials mentioning features or use of this software -: 14: * must display the following acknowledgement: -: 15: * This product includes software developed by the University of -: 16: * California, Berkeley and its contributors. -: 17: * 4. Neither the name of the University nor the names of its contributors -: 18: * may be used to endorse or promote products derived from this software -: 19: * without specific prior written permission. -: 20: * -: 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -: 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -: 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -: 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -: 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -: 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -: 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -: 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -: 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -: 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -: 31: * SUCH DAMAGE. -: 32: */ -: 33: -: 34:#if defined(LIBC_SCCS) && !defined(lint) -: 35:static char sccsid[] = "@(#)bt_page.c 8.4 (Berkeley) 11/2/95"; -: 36:#endif /* LIBC_SCCS and not lint */ -: 37: -: 38:#include -: 39: -: 40:#include -: 41: -: 42:#include "db-int.h" -: 43:#include "btree.h" -: 44: -: 45:/* -: 46: * __bt_free -- -: 47: * Put a page on the freelist. -: 48: * -: 49: * Parameters: -: 50: * t: tree -: 51: * h: page to free -: 52: * -: 53: * Returns: -: 54: * RET_ERROR, RET_SUCCESS -: 55: * -: 56: * Side-effect: -: 57: * mpool_put's the page. -: 58: */ -: 59:int 3090: 60:__bt_free(t, h) -: 61: BTREE *t; -: 62: PAGE *h; -: 63:{ -: 64: /* Insert the page at the head of the free list. */ 3090: 65: h->prevpg = P_INVALID; 3090: 66: h->nextpg = t->bt_free; 3090: 67: t->bt_free = h->pgno; 3090: 68: F_SET(t, B_METADIRTY); -: 69: -: 70: /* Make sure the page gets written back. */ 3090: 71: return (mpool_put(t->bt_mp, h, MPOOL_DIRTY)); -: 72:} -: 73: -: 74:/* -: 75: * __bt_new -- -: 76: * Get a new page, preferably from the freelist. -: 77: * -: 78: * Parameters: -: 79: * t: tree -: 80: * npg: storage for page number. -: 81: * -: 82: * Returns: -: 83: * Pointer to a page, NULL on error. -: 84: */ -: 85:PAGE * 119786: 86:__bt_new(t, npg) -: 87: BTREE *t; -: 88: db_pgno_t *npg; -: 89:{ -: 90: PAGE *h; -: 91: 122567: 92: if (t->bt_free != P_INVALID && 2781: 93: (h = mpool_get(t->bt_mp, t->bt_free, 0)) != NULL) { 2781: 94: *npg = t->bt_free; 2781: 95: t->bt_free = h->nextpg; 2781: 96: F_SET(t, B_METADIRTY); 2781: 97: return (h); -: 98: } 117005: 99: return (mpool_new(t->bt_mp, npg, MPOOL_PAGE_NEXT)); -: 100:}