Changeset 152b2b0 in mainline for generic/src/adt/btree.c


Ignore:
Timestamp:
2006-06-01T14:11:29Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7c95658c
Parents:
bd571f44
Message:

Implement recursive function for deallocating the whole B+tree.
Make use of this function in address space management.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/adt/btree.c

    rbd571f44 r152b2b0  
    5151#include <print.h>
    5252
     53static void btree_destroy_subtree(btree_node_t *root);
    5354static void _btree_insert(btree_t *t, btree_key_t key, void *value, btree_node_t *rsubtree, btree_node_t *node);
    5455static void _btree_remove(btree_t *t, btree_key_t key, btree_node_t *node);
     
    102103void btree_destroy(btree_t *t)
    103104{
    104         ASSERT(!t->root->keys);
    105         slab_free(btree_node_slab, t->root);
     105        btree_destroy_subtree(t->root);
    106106}
    107107
     
    127127       
    128128        _btree_insert(t, key, value, NULL, lnode);
     129}
     130
     131/** Destroy subtree rooted in a node.
     132 *
     133 * @param root Root of the subtree.
     134 */
     135void btree_destroy_subtree(btree_node_t *root)
     136{
     137        int i;
     138
     139        if (root->keys) {
     140                for (i = 0; i < root->keys + 1; i++) {
     141                        if (root->subtree[i])
     142                                btree_destroy_subtree(root->subtree[i]);
     143                }
     144        }
     145        slab_free(btree_node_slab, root);
    129146}
    130147
Note: See TracChangeset for help on using the changeset viewer.