Bitdefender Hypervisor Memory Introspection
rbtree.c File Reference
#include "introcrt.h"

Go to the source code of this file.

Macros

#define RB_NODE_IS_BLACK(Node)   (ncBlack == (Node)->Color)
 
#define RB_NODE_IS_RED(Node)   (ncRed == (Node)->Color)
 

Functions

static void RbpLeftRotate (RBTREE *Tree, RBNODE *Node)
 
static void RbpRightRotate (RBTREE *Tree, RBNODE *Node)
 
static void RbpDeleteFixup (RBTREE *Tree, RBNODE *Node)
 
static void RbpInsertFixup (RBTREE *Tree, RBNODE *Node)
 
static void RbpTransplant (RBTREE *Tree, RBNODE *Node1, RBNODE *Node2)
 
void RbPreinit (RBTREE *Tree)
 
INTSTATUS RbInit (RBTREE *Tree, PFUNC_RbTreeNodeFree NodeFree, PFUNC_RbTreeNodeCompare NodeCompare)
 
void RbUninit (RBTREE *Tree)
 
RBNODERbSearch (RBTREE *Tree, RBNODE *NodeToSearch, RBNODE **Parent)
 
INTSTATUS RbLookupNode (RBTREE *Tree, RBNODE *NodeToSearch, RBNODE **NodeFound)
 
INTSTATUS RbLookupNodeCustomCompare (RBTREE *Tree, PFUNC_RbTreeNodeCustomCompare CompareFunc, void *Key, RBNODE **NodeFound)
 
INTSTATUS RbInsertNode (RBTREE *Tree, RBNODE *Node)
 
RBNODERbTreeMinimum (RBTREE *Tree, RBNODE *Node)
 
void RbDeleteNode (RBTREE *Tree, RBNODE *Node)
 
INTSTATUS RbWalkInorderTree (RBTREE *Tree, PFUNC_RbTreeWalkCallback Callback, void *WalkContext)
 

Macro Definition Documentation

◆ RB_NODE_IS_BLACK

#define RB_NODE_IS_BLACK (   Node)    (ncBlack == (Node)->Color)

Definition at line 7 of file rbtree.c.

Referenced by RbpDeleteFixup().

◆ RB_NODE_IS_RED

#define RB_NODE_IS_RED (   Node)    (ncRed == (Node)->Color)

Definition at line 8 of file rbtree.c.

Referenced by RbpDeleteFixup(), and RbpInsertFixup().

Function Documentation

◆ RbDeleteNode()

void RbDeleteNode ( RBTREE Tree,
RBNODE Node 
)

◆ RbInit()

INTSTATUS RbInit ( RBTREE Tree,
PFUNC_RbTreeNodeFree  NodeFree,
PFUNC_RbTreeNodeCompare  NodeCompare 
)

◆ RbInsertNode()

INTSTATUS RbInsertNode ( RBTREE Tree,
RBNODE Node 
)

◆ RbLookupNode()

◆ RbLookupNodeCustomCompare()

INTSTATUS RbLookupNodeCustomCompare ( RBTREE Tree,
PFUNC_RbTreeNodeCustomCompare  CompareFunc,
void *  Key,
RBNODE **  NodeFound 
)

Definition at line 552 of file rbtree.c.

Referenced by IntWinUmModCacheExportFind(), IntWinVadFindByBase(), and IntWinVadFindByVa().

◆ RbpDeleteFixup()

static void RbpDeleteFixup ( RBTREE Tree,
RBNODE Node 
)
static

Definition at line 114 of file rbtree.c.

Referenced by RbDeleteNode().

◆ RbpInsertFixup()

static void RbpInsertFixup ( RBTREE Tree,
RBNODE Node 
)
static

Definition at line 245 of file rbtree.c.

Referenced by RbInsertNode().

◆ RbpLeftRotate()

static void RbpLeftRotate ( RBTREE Tree,
RBNODE Node 
)
static

Definition at line 12 of file rbtree.c.

Referenced by RbpDeleteFixup(), and RbpInsertFixup().

◆ RbPreinit()

void RbPreinit ( RBTREE Tree)

◆ RbpRightRotate()

static void RbpRightRotate ( RBTREE Tree,
RBNODE Node 
)
static

Definition at line 63 of file rbtree.c.

Referenced by RbpDeleteFixup(), and RbpInsertFixup().

◆ RbpTransplant()

static void RbpTransplant ( RBTREE Tree,
RBNODE Node1,
RBNODE Node2 
)
static

Definition at line 340 of file rbtree.c.

Referenced by RbDeleteNode().

◆ RbSearch()

RBNODE* RbSearch ( RBTREE Tree,
RBNODE NodeToSearch,
RBNODE **  Parent 
)

Definition at line 478 of file rbtree.c.

Referenced by RbInsertNode(), and RbLookupNode().

◆ RbTreeMinimum()

RBNODE* RbTreeMinimum ( RBTREE Tree,
RBNODE Node 
)

Definition at line 690 of file rbtree.c.

Referenced by RbDeleteNode().

◆ RbUninit()

◆ RbWalkInorderTree()

INTSTATUS RbWalkInorderTree ( RBTREE Tree,
PFUNC_RbTreeWalkCallback  Callback,
void *  WalkContext 
)