????Linux ??? radix ?? API
???????????????????????????radix ??????????????????
?????????????ú? RADIX_TREE ??
????RADIX_TREE(name?? gfp_mask);
???????????????????? name ???????????? RADIX_TREE ????? radix ???????????????RADIX_TREE ????????????
????#define RADIX_TREE(name?? mask)
????struct radix_tree_root name = RADIX_TREE_INIT(mask)
????#define RADIX_TREE_INIT(mask)   {
????.height = 0??
????.gfp_mask = (mask)??
????.rnode = NULL??
????}
????RADIX_TREE ????????? name ????????? radix_tree_root ????????? RADIX_TREE_INIT ??????? mask ???г???????? RADIX_TREE_INIT ?? radix_tree_root ?????????????????? gfp_mask ????????? mask ??
???????????????????? radix_tree_root ?????????????? mask ???? INIT_RADIX_TREE ?????????г??????
????struct radix_tree_root my_radix_tree;
????INIT_RADIX_TREE(my_tree?? gfp_mask_for_my_radix_tree);
????INIT_RADIX_TREE ???壺
????#define INIT_RADIX_TREE(root?? mask)
????do {
????(root)->height = 0;
????(root)->gfp_mask = (mask);
????(root)->rnode = NULL;
????} while (0)
?????? INIT_RADIX_TREE ??????????????? RADIX_TREE_INIT ???
???????????? radix ?????????????????????????????
????radix_tree_insert;
????radix_tree_delete.
????????????? radix_tree_insert ?????????Σ?
????radix ?? root ????
?????????????
???????????洢??????
????????????? radix_tree_delete ?????????洢??????????????? radix_tree_insert ????
????radix ?????????????????????????
????radix_tree_lookup;
????radix_tree_gang_lookup;
????radix_tree_lookup_slot;
????????????? radix_tree_lookup ?????????????
????radix ?? root ????
?????????????
??????????????????????????? radix ??????????????????????
????????????? radix_tree_gang_lookup ??????????????
????unsigned int radix_tree_gang_lookup(struct radix_tree_root *root??
????void **results??
????unsigned long first_index??
????unsigned int max_items);
????????????????????????????????????????????????????????????????? max_items ???С??
????????????? radix_tree_lookup_slot ?????? slot ?????洢???????