diff options
author | Richard Braun <rbraun@sceen.net> | 2013-06-07 20:44:19 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2013-06-07 20:44:19 +0200 |
commit | 207a59c80f601feb60f74ed541cb35ac74f6b193 (patch) | |
tree | 7c0cb3031a473e757bd3c7e81fd9df14c72e6af9 /test | |
parent | 9e75942fcbc164b4725d2d4410c6211c5c0a4a57 (diff) |
rdxtree: encode pointer type in entry address
Entry addresses are odd if they refer to an internal tree node. This change
is required for the upcoming lockless concurrent code.
Diffstat (limited to 'test')
-rw-r--r-- | test/test_rdxtree.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/test/test_rdxtree.c b/test/test_rdxtree.c index ead3aa3..be375bf 100644 --- a/test/test_rdxtree.c +++ b/test/test_rdxtree.c @@ -100,6 +100,7 @@ print_values(struct rdxtree_node *node, size_t index, size_t level) static void print_node(struct rdxtree_node *node, int height, size_t index, size_t level) { + void *entry; size_t i; for (i = level; i > 0; i--) @@ -107,8 +108,10 @@ print_node(struct rdxtree_node *node, int height, size_t index, size_t level) printf("%zu:n (bm: " BM_FORMAT ")\n", index, node->alloc_bm); - for (i = 0; i < ARRAY_SIZE(node->entries); i++) - print_subtree(node->entries[i], height - 1, i, level + 1); + for (i = 0; i < ARRAY_SIZE(node->entries); i++) { + entry = rdxtree_entry_addr(node->entries[i]); + print_subtree(entry, height - 1, i, level + 1); + } } static void @@ -126,10 +129,14 @@ print_subtree(struct rdxtree_node *node, int height, size_t index, size_t level) static void print_tree(struct rdxtree *tree) { + void *root; + + root = rdxtree_entry_addr(tree->root); + if (tree->height == 0) - print_value(tree->root, 0, 0); + print_value(root, 0, 0); else - print_subtree(tree->root, tree->height, 0, 0); + print_subtree(root, tree->height, 0, 0); } static void |