need help with the radix tree functions

Hello there!

I hope you can help me with this since I'm going to get crazy...

I'm trying to read and understand the radix tree code (lib/radix.c) but although in theory it's very clear the way it's organised (I read and understood about it in "understanding the linux kernel"), I cannot understand the way it works in practice. Above all I have serious problems to understand the way the indexes are organised..

Do you know where could I find some documentation?

For the moment, I wanted to read the radix_tree_delete and my main problem concerns understanding these macros:

Code:

`#define BITS_PER_LONG 64`

#define RADIX_TREE_MAX_TAGS 2

#define RADIX_TREE_MAP_SHIFT 3 /* For more stressful testing */

#define RADIX_TREE_MAP_SIZE (1UL << RADIX_TREE_MAP_SHIFT)

#define RADIX_TREE_MAP_MASK (RADIX_TREE_MAP_SIZE-1)

#define RADIX_TREE_TAG_LONGS \

((RADIX_TREE_MAP_SIZE + BITS_PER_LONG - 1) / BITS_PER_LONG)

#define RADIX_TREE_INDEX_BITS (8 /* CHAR_BIT */ * sizeof(unsigned long))

#define RADIX_TREE_MAX_PATH (RADIX_TREE_INDEX_BITS/RADIX_TREE_MAP_SHIFT + 2)

and the idea behind radix_tree_direct_to_ptr() & co..

thanks a lot for any help you'll give me!

Bye!