at v4.13-rc2 62 lines 2.4 kB view raw
1#include <linux/gfp.h> 2#include <linux/types.h> 3#include <linux/radix-tree.h> 4#include <linux/rcupdate.h> 5 6struct item { 7 unsigned long index; 8 unsigned int order; 9}; 10 11struct item *item_create(unsigned long index, unsigned int order); 12int __item_insert(struct radix_tree_root *root, struct item *item); 13int item_insert(struct radix_tree_root *root, unsigned long index); 14int item_insert_order(struct radix_tree_root *root, unsigned long index, 15 unsigned order); 16int item_delete(struct radix_tree_root *root, unsigned long index); 17struct item *item_lookup(struct radix_tree_root *root, unsigned long index); 18 19void item_check_present(struct radix_tree_root *root, unsigned long index); 20void item_check_absent(struct radix_tree_root *root, unsigned long index); 21void item_gang_check_present(struct radix_tree_root *root, 22 unsigned long start, unsigned long nr, 23 int chunk, int hop); 24void item_full_scan(struct radix_tree_root *root, unsigned long start, 25 unsigned long nr, int chunk); 26void item_kill_tree(struct radix_tree_root *root); 27 28int tag_tagged_items(struct radix_tree_root *, pthread_mutex_t *, 29 unsigned long start, unsigned long end, unsigned batch, 30 unsigned iftag, unsigned thentag); 31unsigned long find_item(struct radix_tree_root *, void *item); 32 33void tag_check(void); 34void multiorder_checks(void); 35void iteration_test(unsigned order, unsigned duration); 36void benchmark(void); 37void idr_checks(void); 38void ida_checks(void); 39void ida_thread_tests(void); 40 41struct item * 42item_tag_set(struct radix_tree_root *root, unsigned long index, int tag); 43struct item * 44item_tag_clear(struct radix_tree_root *root, unsigned long index, int tag); 45int item_tag_get(struct radix_tree_root *root, unsigned long index, int tag); 46void tree_verify_min_height(struct radix_tree_root *root, int maxindex); 47void verify_tag_consistency(struct radix_tree_root *root, unsigned int tag); 48 49extern int nr_allocated; 50 51/* Normally private parts of lib/radix-tree.c */ 52struct radix_tree_node *entry_to_node(void *ptr); 53void radix_tree_dump(struct radix_tree_root *root); 54int root_tag_get(struct radix_tree_root *root, unsigned int tag); 55unsigned long node_maxindex(struct radix_tree_node *); 56unsigned long shift_maxindex(unsigned int shift); 57int radix_tree_cpu_dead(unsigned int cpu); 58struct radix_tree_preload { 59 unsigned nr; 60 struct radix_tree_node *nodes; 61}; 62extern struct radix_tree_preload radix_tree_preloads;