uint32_t node_size(struct node *node) { int i; uint32_t sz = 0; for (i = 0; i < node->n_children; i++) { struct child_pointer *ptr = &node->parts[i].ptr; if (node->height > 0) sz += nmb_memsize(ptr->u.nonleaf->buffer); else sz += lmb_memsize(ptr->u.leaf->buffer); } return sz; }
int node_find_heaviest_idx(struct node *node) { int i; int idx = 0; uint32_t maxsz = 0; for (i = 0; i < (int)node->u.n.n_children; i++) { uint32_t sz; struct partition *part; part = &node->u.n.parts[i]; sz = nmb_memsize(part->buffer); if (sz > maxsz) { idx = i; maxsz = sz; } } return idx; }
uint32_t node_size(struct node *n) { uint32_t size = 0U; size += (sizeof(*n)); if (nessunlikely(n->height == 0)) { size += lmb_memsize(n->u.l.buffer); } else { uint32_t i; for (i = 0; i < n->u.n.n_children - 1; i++) { size += msgsize(&n->u.n.pivots[i]); } for (i = 0; i < n->u.n.n_children; i++) { size += nmb_memsize(n->u.n.parts[i].buffer); } } return size; }
int node_find_heaviest_idx(struct node *node) { int i; int idx = 0; uint32_t sz = 0; uint32_t maxsz = 0; for (i = 0; i < node->n_children; i++) { struct child_pointer *ptr = &node->parts[i].ptr; if (node->height > 0) sz = nmb_memsize(ptr->u.nonleaf->buffer); else sz = lmb_memsize(ptr->u.leaf->buffer); if (sz > maxsz) { idx = i; maxsz = sz; } } return idx; }