1 extern struct btree_geo btree_geo128
;
3 struct btree_head128
{ struct btree_head h
; };
5 static inline void btree_init_mempool128(struct btree_head128
*head
,
8 btree_init_mempool(&head
->h
, mempool
);
11 static inline int btree_init128(struct btree_head128
*head
)
13 return btree_init(&head
->h
);
16 static inline void btree_destroy128(struct btree_head128
*head
)
18 btree_destroy(&head
->h
);
21 static inline void *btree_lookup128(struct btree_head128
*head
, u64 k1
, u64 k2
)
23 u64 key
[2] = {k1
, k2
};
24 return btree_lookup(&head
->h
, &btree_geo128
, (unsigned long *)&key
);
27 static inline void *btree_get_prev128(struct btree_head128
*head
,
30 u64 key
[2] = {*k1
, *k2
};
33 val
= btree_get_prev(&head
->h
, &btree_geo128
,
34 (unsigned long *)&key
);
40 static inline int btree_insert128(struct btree_head128
*head
, u64 k1
, u64 k2
,
43 u64 key
[2] = {k1
, k2
};
44 return btree_insert(&head
->h
, &btree_geo128
,
45 (unsigned long *)&key
, val
, gfp
);
48 static inline int btree_update128(struct btree_head128
*head
, u64 k1
, u64 k2
,
51 u64 key
[2] = {k1
, k2
};
52 return btree_update(&head
->h
, &btree_geo128
,
53 (unsigned long *)&key
, val
);
56 static inline void *btree_remove128(struct btree_head128
*head
, u64 k1
, u64 k2
)
58 u64 key
[2] = {k1
, k2
};
59 return btree_remove(&head
->h
, &btree_geo128
, (unsigned long *)&key
);
62 static inline void *btree_last128(struct btree_head128
*head
, u64
*k1
, u64
*k2
)
67 val
= btree_last(&head
->h
, &btree_geo128
, (unsigned long *)&key
[0]);
76 static inline int btree_merge128(struct btree_head128
*target
,
77 struct btree_head128
*victim
,
80 return btree_merge(&target
->h
, &victim
->h
, &btree_geo128
, gfp
);
83 void visitor128(void *elem
, unsigned long opaque
, unsigned long *__key
,
84 size_t index
, void *__func
);
86 typedef void (*visitor128_t
)(void *elem
, unsigned long opaque
,
87 u64 key1
, u64 key2
, size_t index
);
89 static inline size_t btree_visitor128(struct btree_head128
*head
,
93 return btree_visitor(&head
->h
, &btree_geo128
, opaque
,
97 static inline size_t btree_grim_visitor128(struct btree_head128
*head
,
101 return btree_grim_visitor(&head
->h
, &btree_geo128
, opaque
,
105 #define btree_for_each_safe128(head, k1, k2, val) \
106 for (val = btree_last128(head, &k1, &k2); \
108 val = btree_get_prev128(head, &k1, &k2))