Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


reformatting of the source files
[palacios.git] / palacios / src / palacios / vmm_rbtree.c
index 520e227..3b15bcf 100644 (file)
 
 static void __rb_rotate_left(struct rb_node *node, struct rb_root *root)
 {
-       struct rb_node *right = node->rb_right;
-       struct rb_node *parent = rb_parent(node);
+    struct rb_node *right = node->rb_right;
+    struct rb_node *parent = rb_parent(node);
 
-       if ((node->rb_right = right->rb_left))
-               rb_set_parent(right->rb_left, node);
-       right->rb_left = node;
+    if ((node->rb_right = right->rb_left))
+       rb_set_parent(right->rb_left, node);
+    right->rb_left = node;
 
-       rb_set_parent(right, parent);
+    rb_set_parent(right, parent);
 
-       if (parent)
+    if (parent)
        {
-               if (node == parent->rb_left)
-                       parent->rb_left = right;
-               else
-                       parent->rb_right = right;
+           if (node == parent->rb_left)
+               parent->rb_left = right;
+           else
+               parent->rb_right = right;
        }
-       else
-               root->rb_node = right;
-       rb_set_parent(node, right);
+    else
+       root->rb_node = right;
+    rb_set_parent(node, right);
 }
 
 static void __rb_rotate_right(struct rb_node *node, struct rb_root *root)
 {
-       struct rb_node *left = node->rb_left;
-       struct rb_node *parent = rb_parent(node);
+    struct rb_node * left = node->rb_left;
+    struct rb_node * parent = rb_parent(node);
 
-       if ((node->rb_left = left->rb_right))
-               rb_set_parent(left->rb_right, node);
-       left->rb_right = node;
+    if ((node->rb_left = left->rb_right)) {
+       rb_set_parent(left->rb_right, node);
+    }
 
-       rb_set_parent(left, parent);
+    left->rb_right = node;
 
-       if (parent)
-       {
-               if (node == parent->rb_right)
-                       parent->rb_right = left;
-               else
-                       parent->rb_left = left;
+    rb_set_parent(left, parent);
+
+    if (parent) {
+       if (node == parent->rb_right) {
+           parent->rb_right = left;
+       } else { 
+           parent->rb_left = left;
        }
-       else
-               root->rb_node = left;
-       rb_set_parent(node, left);
+    } else {
+       root->rb_node = left;
+    }
+
+    rb_set_parent(node, left);
 }
 
 void v3_rb_insert_color(struct rb_node *node, struct rb_root *root)
 {
-       struct rb_node *parent, *gparent;
+    struct rb_node *parent, *gparent;
 
-       while ((parent = rb_parent(node)) && rb_is_red(parent))
+    while ((parent = rb_parent(node)) && rb_is_red(parent))
        {
-               gparent = rb_parent(parent);
+           gparent = rb_parent(parent);
 
-               if (parent == gparent->rb_left)
+           if (parent == gparent->rb_left)
                {
-                       {
-                               register struct rb_node *uncle = gparent->rb_right;
-                               if (uncle && rb_is_red(uncle))
-                               {
-                                       rb_set_black(uncle);
-                                       rb_set_black(parent);
-                                       rb_set_red(gparent);
-                                       node = gparent;
-                                       continue;
-                               }
-                       }
+                   {
+                       register struct rb_node *uncle = gparent->rb_right;
+                       if (uncle && rb_is_red(uncle))
+                           {
+                               rb_set_black(uncle);
+                               rb_set_black(parent);
+                               rb_set_red(gparent);
+                               node = gparent;
+                               continue;
+                           }
+                   }
 
-                       if (parent->rb_right == node)
+                   if (parent->rb_right == node)
                        {
-                               register struct rb_node *tmp;
-                               __rb_rotate_left(parent, root);
-                               tmp = parent;
-                               parent = node;
-                               node = tmp;
+                           register struct rb_node *tmp;
+                           __rb_rotate_left(parent, root);
+                           tmp = parent;
+                           parent = node;
+                           node = tmp;
                        }
 
-                       rb_set_black(parent);
-                       rb_set_red(gparent);
-                       __rb_rotate_right(gparent, root);
+                   rb_set_black(parent);
+                   rb_set_red(gparent);
+                   __rb_rotate_right(gparent, root);
                } else {
+               {
+                   register struct rb_node *uncle = gparent->rb_left;
+                   if (uncle && rb_is_red(uncle))
                        {
-                               register struct rb_node *uncle = gparent->rb_left;
-                               if (uncle && rb_is_red(uncle))
-                               {
-                                       rb_set_black(uncle);
-                                       rb_set_black(parent);
-                                       rb_set_red(gparent);
-                                       node = gparent;
-                                       continue;
-                               }
+                           rb_set_black(uncle);
+                           rb_set_black(parent);
+                           rb_set_red(gparent);
+                           node = gparent;
+                           continue;
                        }
+               }
 
-                       if (parent->rb_left == node)
-                       {
-                               register struct rb_node *tmp;
-                               __rb_rotate_right(parent, root);
-                               tmp = parent;
-                               parent = node;
-                               node = tmp;
-                       }
+               if (parent->rb_left == node)
+                   {
+                       register struct rb_node *tmp;
+                       __rb_rotate_right(parent, root);
+                       tmp = parent;
+                       parent = node;
+                       node = tmp;
+                   }
 
-                       rb_set_black(parent);
-                       rb_set_red(gparent);
-                       __rb_rotate_left(gparent, root);
-               }
+               rb_set_black(parent);
+               rb_set_red(gparent);
+               __rb_rotate_left(gparent, root);
+           }
        }
 
-       rb_set_black(root->rb_node);
+    rb_set_black(root->rb_node);
 }
 
 
 static void __rb_erase_color(struct rb_node *node, struct rb_node *parent,
                             struct rb_root *root)
 {
-       struct rb_node *other;
+    struct rb_node *other;
 
-       while ((!node || rb_is_black(node)) && node != root->rb_node)
+    while ((!node || rb_is_black(node)) && node != root->rb_node)
        {
-               if (parent->rb_left == node)
+           if (parent->rb_left == node)
                {
-                       other = parent->rb_right;
-                       if (rb_is_red(other))
+                   other = parent->rb_right;
+                   if (rb_is_red(other))
                        {
-                               rb_set_black(other);
-                               rb_set_red(parent);
-                               __rb_rotate_left(parent, root);
-                               other = parent->rb_right;
+                           rb_set_black(other);
+                           rb_set_red(parent);
+                           __rb_rotate_left(parent, root);
+                           other = parent->rb_right;
                        }
-                       if ((!other->rb_left || rb_is_black(other->rb_left)) &&
-                           (!other->rb_right || rb_is_black(other->rb_right)))
+                   if ((!other->rb_left || rb_is_black(other->rb_left)) &&
+                       (!other->rb_right || rb_is_black(other->rb_right)))
                        {
-                               rb_set_red(other);
-                               node = parent;
-                               parent = rb_parent(node);
+                           rb_set_red(other);
+                           node = parent;
+                           parent = rb_parent(node);
                        }
-                       else
+                   else
                        {
-                               if (!other->rb_right || rb_is_black(other->rb_right))
+                           if (!other->rb_right || rb_is_black(other->rb_right))
                                {
-                                       struct rb_node *o_left;
-                                       if ((o_left = other->rb_left))
-                                               rb_set_black(o_left);
-                                       rb_set_red(other);
-                                       __rb_rotate_right(other, root);
-                                       other = parent->rb_right;
+                                   struct rb_node *o_left;
+                                   if ((o_left = other->rb_left))
+                                       rb_set_black(o_left);
+                                   rb_set_red(other);
+                                   __rb_rotate_right(other, root);
+                                   other = parent->rb_right;
                                }
-                               rb_set_color(other, rb_color(parent));
-                               rb_set_black(parent);
-                               if (other->rb_right)
-                                       rb_set_black(other->rb_right);
-                               __rb_rotate_left(parent, root);
-                               node = root->rb_node;
-                               break;
+                           rb_set_color(other, rb_color(parent));
+                           rb_set_black(parent);
+                           if (other->rb_right)
+                               rb_set_black(other->rb_right);
+                           __rb_rotate_left(parent, root);
+                           node = root->rb_node;
+                           break;
                        }
                }
-               else
+           else
                {
-                       other = parent->rb_left;
-                       if (rb_is_red(other))
+                   other = parent->rb_left;
+                   if (rb_is_red(other))
                        {
-                               rb_set_black(other);
-                               rb_set_red(parent);
-                               __rb_rotate_right(parent, root);
-                               other = parent->rb_left;
+                           rb_set_black(other);
+                           rb_set_red(parent);
+                           __rb_rotate_right(parent, root);
+                           other = parent->rb_left;
                        }
-                       if ((!other->rb_left || rb_is_black(other->rb_left)) &&
-                           (!other->rb_right || rb_is_black(other->rb_right)))
+                   if ((!other->rb_left || rb_is_black(other->rb_left)) &&
+                       (!other->rb_right || rb_is_black(other->rb_right)))
                        {
-                               rb_set_red(other);
-                               node = parent;
-                               parent = rb_parent(node);
+                           rb_set_red(other);
+                           node = parent;
+                           parent = rb_parent(node);
                        }
-                       else
+                   else
                        {
-                               if (!other->rb_left || rb_is_black(other->rb_left))
+                           if (!other->rb_left || rb_is_black(other->rb_left))
                                {
-                                       register struct rb_node *o_right;
-                                       if ((o_right = other->rb_right))
-                                               rb_set_black(o_right);
-                                       rb_set_red(other);
-                                       __rb_rotate_left(other, root);
-                                       other = parent->rb_left;
+                                   register struct rb_node *o_right;
+                                   if ((o_right = other->rb_right))
+                                       rb_set_black(o_right);
+                                   rb_set_red(other);
+                                   __rb_rotate_left(other, root);
+                                   other = parent->rb_left;
                                }
-                               rb_set_color(other, rb_color(parent));
-                               rb_set_black(parent);
-                               if (other->rb_left)
-                                       rb_set_black(other->rb_left);
-                               __rb_rotate_right(parent, root);
-                               node = root->rb_node;
-                               break;
+                           rb_set_color(other, rb_color(parent));
+                           rb_set_black(parent);
+                           if (other->rb_left)
+                               rb_set_black(other->rb_left);
+                           __rb_rotate_right(parent, root);
+                           node = root->rb_node;
+                           break;
                        }
                }
        }
-       if (node)
-               rb_set_black(node);
+    if (node)
+       rb_set_black(node);
 }
 
 void v3_rb_erase(struct rb_node *node, struct rb_root *root)
 {
-       struct rb_node *child, *parent;
-       int color;
-
-       if (!node->rb_left)
-               child = node->rb_right;
-       else if (!node->rb_right)
-               child = node->rb_left;
-       else
+    struct rb_node *child, *parent;
+    int color;
+
+    if (!node->rb_left)
+       child = node->rb_right;
+    else if (!node->rb_right)
+       child = node->rb_left;
+    else
        {
-               struct rb_node *old = node, *left;
-
-               node = node->rb_right;
-               while ((left = node->rb_left) != NULL)
-                       node = left;
-               child = node->rb_right;
-               parent = rb_parent(node);
-               color = rb_color(node);
-
-               if (child)
-                       rb_set_parent(child, parent);
-               if (parent == old) {
-                       parent->rb_right = child;
-                       parent = node;
-               } else
-                       parent->rb_left = child;
+           struct rb_node *old = node, *left;
+
+           node = node->rb_right;
+           while ((left = node->rb_left) != NULL)
+               node = left;
+           child = node->rb_right;
+           parent = rb_parent(node);
+           color = rb_color(node);
 
-               node->rb_parent_color = old->rb_parent_color;
-               node->rb_right = old->rb_right;
-               node->rb_left = old->rb_left;
+           if (child)
+               rb_set_parent(child, parent);
+           if (parent == old) {
+               parent->rb_right = child;
+               parent = node;
+           } else
+               parent->rb_left = child;
 
-               if (rb_parent(old))
+           node->rb_parent_color = old->rb_parent_color;
+           node->rb_right = old->rb_right;
+           node->rb_left = old->rb_left;
+
+           if (rb_parent(old))
                {
-                       if (rb_parent(old)->rb_left == old)
-                               rb_parent(old)->rb_left = node;
-                       else
-                               rb_parent(old)->rb_right = node;
+                   if (rb_parent(old)->rb_left == old)
+                       rb_parent(old)->rb_left = node;
+                   else
+                       rb_parent(old)->rb_right = node;
                } else
-                       root->rb_node = node;
+               root->rb_node = node;
 
-               rb_set_parent(old->rb_left, node);
-               if (old->rb_right)
-                       rb_set_parent(old->rb_right, node);
-               goto color;
+           rb_set_parent(old->rb_left, node);
+           if (old->rb_right)
+               rb_set_parent(old->rb_right, node);
+           goto color;
        }
 
-       parent = rb_parent(node);
-       color = rb_color(node);
+    parent = rb_parent(node);
+    color = rb_color(node);
 
-       if (child)
-               rb_set_parent(child, parent);
-       if (parent)
+    if (child)
+       rb_set_parent(child, parent);
+    if (parent)
        {
-               if (parent->rb_left == node)
-                       parent->rb_left = child;
-               else
-                       parent->rb_right = child;
+           if (parent->rb_left == node)
+               parent->rb_left = child;
+           else
+               parent->rb_right = child;
        }
-       else
-               root->rb_node = child;
+    else
+       root->rb_node = child;
 
  color:
-       if (color == RB_BLACK)
-               __rb_erase_color(child, parent, root);
+    if (color == RB_BLACK)
+       __rb_erase_color(child, parent, root);
 }
 
 
@@ -294,98 +297,98 @@ void v3_rb_erase(struct rb_node *node, struct rb_root *root)
  */
 struct rb_node *v3_rb_first(struct rb_root *root)
 {
-       struct rb_node  *n;
-
-       n = root->rb_node;
-       if (!n)
-               return NULL;
-       while (n->rb_left)
-               n = n->rb_left;
-       return n;
+    struct rb_node     *n;
+
+    n = root->rb_node;
+    if (!n)
+       return NULL;
+    while (n->rb_left)
+       n = n->rb_left;
+    return n;
 }
 
 
 struct rb_node *v3_rb_last(struct rb_root *root)
 {
-       struct rb_node  *n;
-
-       n = root->rb_node;
-       if (!n)
-               return NULL;
-       while (n->rb_right)
-               n = n->rb_right;
-       return n;
+    struct rb_node     *n;
+
+    n = root->rb_node;
+    if (!n)
+       return NULL;
+    while (n->rb_right)
+       n = n->rb_right;
+    return n;
 }
 
 
 struct rb_node *v3_rb_next(struct rb_node *node)
 {
-       struct rb_node *parent;
-
-       /* If we have a right-hand child, go down and then left as far
-          as we can. */
-       if (node->rb_right) {
-               node = node->rb_right; 
-               while (node->rb_left)
-                       node=node->rb_left;
-               return node;
-       }
-
-       /* No right-hand children.  Everything down and left is
-          smaller than us, so any 'next' node must be in the general
-          direction of our parent. Go up the tree; any time the
-          ancestor is a right-hand child of its parent, keep going
-          up. First time it's a left-hand child of its parent, said
-          parent is our 'next' node. */
-       while ((parent = rb_parent(node)) && node == parent->rb_right)
-               node = parent;
-
-       return parent;
+    struct rb_node *parent;
+
+    /* If we have a right-hand child, go down and then left as far
+       as we can. */
+    if (node->rb_right) {
+       node = node->rb_right; 
+       while (node->rb_left)
+           node=node->rb_left;
+       return node;
+    }
+
+    /* No right-hand children.  Everything down and left is
+       smaller than us, so any 'next' node must be in the general
+       direction of our parent. Go up the tree; any time the
+       ancestor is a right-hand child of its parent, keep going
+       up. First time it's a left-hand child of its parent, said
+       parent is our 'next' node. */
+    while ((parent = rb_parent(node)) && node == parent->rb_right)
+       node = parent;
+
+    return parent;
 }
 
 
 struct rb_node *v3_rb_prev(struct rb_node *node)
 {
-       struct rb_node *parent;
-
-       /* If we have a left-hand child, go down and then right as far
-          as we can. */
-       if (node->rb_left) {
-               node = node->rb_left; 
-               while (node->rb_right)
-                       node=node->rb_right;
-               return node;
-       }
-
-       /* No left-hand children. Go up till we find an ancestor which
-          is a right-hand child of its parent */
-       while ((parent = rb_parent(node)) && node == parent->rb_left)
-               node = parent;
-
-       return parent;
+    struct rb_node *parent;
+
+    /* If we have a left-hand child, go down and then right as far
+       as we can. */
+    if (node->rb_left) {
+       node = node->rb_left; 
+       while (node->rb_right)
+           node=node->rb_right;
+       return node;
+    }
+
+    /* No left-hand children. Go up till we find an ancestor which
+       is a right-hand child of its parent */
+    while ((parent = rb_parent(node)) && node == parent->rb_left)
+       node = parent;
+
+    return parent;
 }
 
 
 void v3_rb_replace_node(struct rb_node *victim, struct rb_node *new,
-                    struct rb_root *root)
+                       struct rb_root *root)
 {
-       struct rb_node *parent = rb_parent(victim);
-
-       /* Set the surrounding nodes to point to the replacement */
-       if (parent) {
-               if (victim == parent->rb_left)
-                       parent->rb_left = new;
-               else
-                       parent->rb_right = new;
-       } else {
-               root->rb_node = new;
-       }
-       if (victim->rb_left)
-               rb_set_parent(victim->rb_left, new);
-       if (victim->rb_right)
-               rb_set_parent(victim->rb_right, new);
+    struct rb_node *parent = rb_parent(victim);
 
-       /* Copy the pointers/colour from the victim to the replacement */
-       *new = *victim;
+    /* Set the surrounding nodes to point to the replacement */
+    if (parent) {
+       if (victim == parent->rb_left)
+           parent->rb_left = new;
+       else
+           parent->rb_right = new;
+    } else {
+       root->rb_node = new;
+    }
+    if (victim->rb_left)
+       rb_set_parent(victim->rb_left, new);
+    if (victim->rb_right)
+       rb_set_parent(victim->rb_right, new);
+
+    /* Copy the pointers/colour from the victim to the replacement */
+    *new = *victim;
 }