struct avl_node * avl_find(const struct avl_tree *tree, const void *key)
int avl_insert(struct avl_tree *tree, struct avl_node *new)
void avl_init(struct avl_tree *tree, avl_tree_comp comp, bool allow_dups, void *ptr)
void avl_delete(struct avl_tree *tree, struct avl_node *node)
#define avl_for_each_element_safe(tree, element, node_member, ptr)
int(* avl_tree_comp)(const void *k1, const void *k2, void *ptr)
#define container_of(ptr, type, member)
void vlist_flush_all(struct vlist_tree *tree)
void vlist_flush(struct vlist_tree *tree)
void vlist_init(struct vlist_tree *tree, avl_tree_comp cmp, vlist_update_cb update)
void vlist_add(struct vlist_tree *tree, struct vlist_node *node, const void *key)
void vlist_delete(struct vlist_tree *tree, struct vlist_node *node)
void(* vlist_update_cb)(struct vlist_tree *tree, struct vlist_node *node_new, struct vlist_node *node_old)