radix-tree.h (4d693d08607ab319095ec8942909df4b4aebdf66) radix-tree.h (14b468791fa955d442f962fdf5207dfd39a131c8)
1/*
2 * Copyright (C) 2001 Momchil Velikov
3 * Portions Copyright (C) 2001 Christoph Hellwig
4 * Copyright (C) 2006 Nick Piggin
5 * Copyright (C) 2012 Konstantin Khlebnikov
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as

--- 66 unchanged lines hidden (view full) ---

75
76#define RADIX_TREE_TAG_LONGS \
77 ((RADIX_TREE_MAP_SIZE + BITS_PER_LONG - 1) / BITS_PER_LONG)
78
79#define RADIX_TREE_INDEX_BITS (8 /* CHAR_BIT */ * sizeof(unsigned long))
80#define RADIX_TREE_MAX_PATH (DIV_ROUND_UP(RADIX_TREE_INDEX_BITS, \
81 RADIX_TREE_MAP_SHIFT))
82
1/*
2 * Copyright (C) 2001 Momchil Velikov
3 * Portions Copyright (C) 2001 Christoph Hellwig
4 * Copyright (C) 2006 Nick Piggin
5 * Copyright (C) 2012 Konstantin Khlebnikov
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as

--- 66 unchanged lines hidden (view full) ---

75
76#define RADIX_TREE_TAG_LONGS \
77 ((RADIX_TREE_MAP_SIZE + BITS_PER_LONG - 1) / BITS_PER_LONG)
78
79#define RADIX_TREE_INDEX_BITS (8 /* CHAR_BIT */ * sizeof(unsigned long))
80#define RADIX_TREE_MAX_PATH (DIV_ROUND_UP(RADIX_TREE_INDEX_BITS, \
81 RADIX_TREE_MAP_SHIFT))
82
83/* Internally used bits of node->count */
84#define RADIX_TREE_COUNT_SHIFT (RADIX_TREE_MAP_SHIFT + 1)
85#define RADIX_TREE_COUNT_MASK ((1UL << RADIX_TREE_COUNT_SHIFT) - 1)
86
87struct radix_tree_node {
88 unsigned char shift; /* Bits remaining in each slot */
89 unsigned char offset; /* Slot offset in parent */
83struct radix_tree_node {
84 unsigned char shift; /* Bits remaining in each slot */
85 unsigned char offset; /* Slot offset in parent */
90 unsigned int count; /* Total entry count */
86 unsigned char count; /* Total entry count */
91 unsigned char exceptional; /* Exceptional entry count */
92 union {
93 struct {
94 /* Used when ascending tree */
95 struct radix_tree_node *parent;
96 /* For tree user */
97 void *private_data;
98 };

--- 166 unchanged lines hidden (view full) ---

265void **radix_tree_lookup_slot(struct radix_tree_root *, unsigned long);
266typedef void (*radix_tree_update_node_t)(struct radix_tree_node *, void *);
267void __radix_tree_replace(struct radix_tree_root *root,
268 struct radix_tree_node *node,
269 void **slot, void *item,
270 radix_tree_update_node_t update_node, void *private);
271void radix_tree_replace_slot(struct radix_tree_root *root,
272 void **slot, void *item);
87 unsigned char exceptional; /* Exceptional entry count */
88 union {
89 struct {
90 /* Used when ascending tree */
91 struct radix_tree_node *parent;
92 /* For tree user */
93 void *private_data;
94 };

--- 166 unchanged lines hidden (view full) ---

261void **radix_tree_lookup_slot(struct radix_tree_root *, unsigned long);
262typedef void (*radix_tree_update_node_t)(struct radix_tree_node *, void *);
263void __radix_tree_replace(struct radix_tree_root *root,
264 struct radix_tree_node *node,
265 void **slot, void *item,
266 radix_tree_update_node_t update_node, void *private);
267void radix_tree_replace_slot(struct radix_tree_root *root,
268 void **slot, void *item);
273bool __radix_tree_delete_node(struct radix_tree_root *root,
269void __radix_tree_delete_node(struct radix_tree_root *root,
274 struct radix_tree_node *node);
275void *radix_tree_delete_item(struct radix_tree_root *, unsigned long, void *);
276void *radix_tree_delete(struct radix_tree_root *, unsigned long);
277void radix_tree_clear_tags(struct radix_tree_root *root,
278 struct radix_tree_node *node,
279 void **slot);
280unsigned int radix_tree_gang_lookup(struct radix_tree_root *root,
281 void **results, unsigned long first_index,

--- 295 unchanged lines hidden ---
270 struct radix_tree_node *node);
271void *radix_tree_delete_item(struct radix_tree_root *, unsigned long, void *);
272void *radix_tree_delete(struct radix_tree_root *, unsigned long);
273void radix_tree_clear_tags(struct radix_tree_root *root,
274 struct radix_tree_node *node,
275 void **slot);
276unsigned int radix_tree_gang_lookup(struct radix_tree_root *root,
277 void **results, unsigned long first_index,

--- 295 unchanged lines hidden ---