indx_t
indx_t i, top;
indx_t i, top;
indx_t cur, top;
indx_t idx;
indx_t cnt, idx, *ip, offset;
pg->lower -= sizeof(indx_t);
indx_t cnt, *ip, offset;
h->lower -= sizeof(indx_t);
b.psize & (sizeof(indx_t) - 1)))
m.psize & (sizeof(indx_t) - 1))
(sizeof(indx_t) + NBLEAFDBT(0, 0));
if (t->bt_ovflsize < NBLEAFDBT(NOVFLSIZE, NOVFLSIZE) + sizeof(indx_t))
NBLEAFDBT(NOVFLSIZE, NOVFLSIZE) + sizeof(indx_t);
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
(nxtindex - idx) * sizeof(indx_t));
h->lower += sizeof(indx_t);
if (h->upper - h->lower < nbytes + sizeof(indx_t))
indx_t idx, nxtindex;
indx_t base, idx, lim;
indx_t idx;
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
(nxtindex - skip) * sizeof(indx_t));
h->lower += sizeof(indx_t);
bt_page(BTREE *t, PAGE *h, PAGE **lp, PAGE **rp, indx_t *skip, size_t ilen)
r->lower = BTDATAOFF + sizeof(indx_t);
bt_root(BTREE *t, PAGE *h, PAGE **lp, PAGE **rp, indx_t *skip, size_t ilen)
static PAGE *bt_page(BTREE *, PAGE *, PAGE **, PAGE **, indx_t *, size_t);
static PAGE *bt_psplit(BTREE *, PAGE *, PAGE *, PAGE *, indx_t *, size_t);
h->lower = BTDATAOFF + 2 * sizeof(indx_t);
static PAGE *bt_root(BTREE *, PAGE *, PAGE **, PAGE **, indx_t *, size_t);
h->lower = BTDATAOFF + 2 * sizeof(indx_t);
bt_psplit(BTREE *t, PAGE *h, PAGE *l, PAGE *r, indx_t *pskip, size_t ilen)
indx_t full, half, nxt, off, skip, top, used;
if ((skip <= off && used + nbytes + sizeof(indx_t) >= full) ||
used += nbytes + sizeof(indx_t);
l->lower += (off + 1) * sizeof(indx_t);
r->lower += off * sizeof(indx_t);
r->lower += sizeof(indx_t);
indx_t nxt, top;
indx_t nxtindex;
indx_t index; /* the index on the page */
indx_t index; /* the index on the page */
indx_t bt_ovflsize; /* cut-off for key/data overflow */
indx_t lower; /* lower bound of free space on page */
indx_t upper; /* upper bound of free space on page */
indx_t linp[1]; /* indx_t-aligned VAR. LENGTH DATA */
sizeof(u_int32_t) + sizeof(indx_t) + sizeof(indx_t))
#define NEXTINDEX(p) (((p)->lower - BTDATAOFF) / sizeof(indx_t))
indx_t *ip, cnt, offset;
h->lower -= sizeof(indx_t);
indx_t idx, nxtindex;
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
(nxtindex - idx) * sizeof(indx_t));
h->lower += sizeof(indx_t);
indx_t idx;
indx_t top;
indx_t lbound = 0, ubound = 0;
if (up->parent_index + 1 < (indx_t)NUMKEYS(up->parent)) {
return sz + sizeof(indx_t);
return sz + sizeof(indx_t);
btree_add_node(struct btree *bt, struct mpage *mp, indx_t indx,
indx_t ofs;
if (node_size + sizeof(indx_t) > SIZELEFT(mp)) {
assert(ofs >= p->lower + sizeof(indx_t));
p->lower += sizeof(indx_t);
btree_del_node(struct btree *bt, struct mpage *mp, indx_t indx)
indx_t i, j, numkeys, ptr;
mp->page->lower -= sizeof(indx_t);
btree_update_key(struct btree *bt, struct mpage *mp, indx_t indx,
indx_t ptr, i, numkeys;
indx_t i;
btree_move_node(struct btree *bt, struct mpage *src, indx_t srcindx,
struct mpage *dst, indx_t dstindx)
indx_t i;
indx_t si = 0, di = 0;
indx_t indx, struct btval *key, struct btval *data,
indx_t indx);
indx_t indx, struct btval *key);
indx_t srcindx, struct mpage *dst, indx_t dstindx);
indx_t newindx;
indx_t indx, struct btkey *expkey);
indx_t i;
expand_prefix(struct btree *bt, struct mpage *mp, indx_t indx,
indx_t fb_lower; /* lower bound of free space */
indx_t fb_upper; /* upper bound of free space */
indx_t ptrs[1]; /* dynamic size */
#define SIZELEFT(mp) (indx_t)((mp)->page->upper - (mp)->page->lower)