root/include/linux/btree-128.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. btree_init_mempool128
  2. btree_init128
  3. btree_destroy128
  4. btree_lookup128
  5. btree_get_prev128
  6. btree_insert128
  7. btree_update128
  8. btree_remove128
  9. btree_last128
  10. btree_merge128
  11. btree_visitor128
  12. btree_grim_visitor128

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 extern struct btree_geo btree_geo128;
   3 
   4 struct btree_head128 { struct btree_head h; };
   5 
   6 static inline void btree_init_mempool128(struct btree_head128 *head,
   7                                          mempool_t *mempool)
   8 {
   9         btree_init_mempool(&head->h, mempool);
  10 }
  11 
  12 static inline int btree_init128(struct btree_head128 *head)
  13 {
  14         return btree_init(&head->h);
  15 }
  16 
  17 static inline void btree_destroy128(struct btree_head128 *head)
  18 {
  19         btree_destroy(&head->h);
  20 }
  21 
  22 static inline void *btree_lookup128(struct btree_head128 *head, u64 k1, u64 k2)
  23 {
  24         u64 key[2] = {k1, k2};
  25         return btree_lookup(&head->h, &btree_geo128, (unsigned long *)&key);
  26 }
  27 
  28 static inline void *btree_get_prev128(struct btree_head128 *head,
  29                                       u64 *k1, u64 *k2)
  30 {
  31         u64 key[2] = {*k1, *k2};
  32         void *val;
  33 
  34         val = btree_get_prev(&head->h, &btree_geo128,
  35                              (unsigned long *)&key);
  36         *k1 = key[0];
  37         *k2 = key[1];
  38         return val;
  39 }
  40 
  41 static inline int btree_insert128(struct btree_head128 *head, u64 k1, u64 k2,
  42                                   void *val, gfp_t gfp)
  43 {
  44         u64 key[2] = {k1, k2};
  45         return btree_insert(&head->h, &btree_geo128,
  46                             (unsigned long *)&key, val, gfp);
  47 }
  48 
  49 static inline int btree_update128(struct btree_head128 *head, u64 k1, u64 k2,
  50                                   void *val)
  51 {
  52         u64 key[2] = {k1, k2};
  53         return btree_update(&head->h, &btree_geo128,
  54                             (unsigned long *)&key, val);
  55 }
  56 
  57 static inline void *btree_remove128(struct btree_head128 *head, u64 k1, u64 k2)
  58 {
  59         u64 key[2] = {k1, k2};
  60         return btree_remove(&head->h, &btree_geo128, (unsigned long *)&key);
  61 }
  62 
  63 static inline void *btree_last128(struct btree_head128 *head, u64 *k1, u64 *k2)
  64 {
  65         u64 key[2];
  66         void *val;
  67 
  68         val = btree_last(&head->h, &btree_geo128, (unsigned long *)&key[0]);
  69         if (val) {
  70                 *k1 = key[0];
  71                 *k2 = key[1];
  72         }
  73 
  74         return val;
  75 }
  76 
  77 static inline int btree_merge128(struct btree_head128 *target,
  78                                  struct btree_head128 *victim,
  79                                  gfp_t gfp)
  80 {
  81         return btree_merge(&target->h, &victim->h, &btree_geo128, gfp);
  82 }
  83 
  84 void visitor128(void *elem, unsigned long opaque, unsigned long *__key,
  85                 size_t index, void *__func);
  86 
  87 typedef void (*visitor128_t)(void *elem, unsigned long opaque,
  88                              u64 key1, u64 key2, size_t index);
  89 
  90 static inline size_t btree_visitor128(struct btree_head128 *head,
  91                                       unsigned long opaque,
  92                                       visitor128_t func2)
  93 {
  94         return btree_visitor(&head->h, &btree_geo128, opaque,
  95                              visitor128, func2);
  96 }
  97 
  98 static inline size_t btree_grim_visitor128(struct btree_head128 *head,
  99                                            unsigned long opaque,
 100                                            visitor128_t func2)
 101 {
 102         return btree_grim_visitor(&head->h, &btree_geo128, opaque,
 103                                   visitor128, func2);
 104 }
 105 
 106 #define btree_for_each_safe128(head, k1, k2, val)       \
 107         for (val = btree_last128(head, &k1, &k2);       \
 108              val;                                       \
 109              val = btree_get_prev128(head, &k1, &k2))
 110 

/* [<][>][^][v][top][bottom][index][help] */