![Al Viro](/assets/img/avatar_default.png)
- added typedef unsigned int __nocast gfp_t; - replaced __nocast uses for gfp flags with gfp_t - it gives exactly the same warnings as far as sparse is concerned, doesn't change generated code (from gcc point of view we replaced unsigned int with typedef) and documents what's going on far better. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
72 lines
2.3 KiB
C
72 lines
2.3 KiB
C
/*
|
|
* Copyright (C) 2001 Momchil Velikov
|
|
* Portions Copyright (C) 2001 Christoph Hellwig
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2, or (at
|
|
* your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
#ifndef _LINUX_RADIX_TREE_H
|
|
#define _LINUX_RADIX_TREE_H
|
|
|
|
#include <linux/preempt.h>
|
|
#include <linux/types.h>
|
|
|
|
struct radix_tree_root {
|
|
unsigned int height;
|
|
unsigned int gfp_mask;
|
|
struct radix_tree_node *rnode;
|
|
};
|
|
|
|
#define RADIX_TREE_INIT(mask) { \
|
|
.height = 0, \
|
|
.gfp_mask = (mask), \
|
|
.rnode = NULL, \
|
|
}
|
|
|
|
#define RADIX_TREE(name, mask) \
|
|
struct radix_tree_root name = RADIX_TREE_INIT(mask)
|
|
|
|
#define INIT_RADIX_TREE(root, mask) \
|
|
do { \
|
|
(root)->height = 0; \
|
|
(root)->gfp_mask = (mask); \
|
|
(root)->rnode = NULL; \
|
|
} while (0)
|
|
|
|
int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
|
|
void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
|
|
void *radix_tree_delete(struct radix_tree_root *, unsigned long);
|
|
unsigned int
|
|
radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
|
|
unsigned long first_index, unsigned int max_items);
|
|
int radix_tree_preload(gfp_t gfp_mask);
|
|
void radix_tree_init(void);
|
|
void *radix_tree_tag_set(struct radix_tree_root *root,
|
|
unsigned long index, int tag);
|
|
void *radix_tree_tag_clear(struct radix_tree_root *root,
|
|
unsigned long index, int tag);
|
|
int radix_tree_tag_get(struct radix_tree_root *root,
|
|
unsigned long index, int tag);
|
|
unsigned int
|
|
radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
|
|
unsigned long first_index, unsigned int max_items, int tag);
|
|
int radix_tree_tagged(struct radix_tree_root *root, int tag);
|
|
|
|
static inline void radix_tree_preload_end(void)
|
|
{
|
|
preempt_enable();
|
|
}
|
|
|
|
#endif /* _LINUX_RADIX_TREE_H */
|