bpf: Add bpf_rbtree_{add,remove,first} decls to bpf_experimental.h
authorDave Marchevsky <davemarchevsky@fb.com>
Tue, 14 Feb 2023 00:40:15 +0000 (16:40 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 14 Feb 2023 03:40:53 +0000 (19:40 -0800)
These kfuncs will be used by selftests in following patches

Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/r/20230214004017.2534011-7-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/bpf_experimental.h

index 424f7bbbfe9b89e4c6ee50b2359ca8a051632816..dbd2c729781a261774a316238b81676c11c6c672 100644 (file)
@@ -65,4 +65,28 @@ extern struct bpf_list_node *bpf_list_pop_front(struct bpf_list_head *head) __ks
  */
 extern struct bpf_list_node *bpf_list_pop_back(struct bpf_list_head *head) __ksym;
 
+/* Description
+ *     Remove 'node' from rbtree with root 'root'
+ * Returns
+ *     Pointer to the removed node, or NULL if 'root' didn't contain 'node'
+ */
+extern struct bpf_rb_node *bpf_rbtree_remove(struct bpf_rb_root *root,
+                                            struct bpf_rb_node *node) __ksym;
+
+/* Description
+ *     Add 'node' to rbtree with root 'root' using comparator 'less'
+ * Returns
+ *     Nothing
+ */
+extern void bpf_rbtree_add(struct bpf_rb_root *root, struct bpf_rb_node *node,
+                          bool (less)(struct bpf_rb_node *a, const struct bpf_rb_node *b)) __ksym;
+
+/* Description
+ *     Return the first (leftmost) node in input tree
+ * Returns
+ *     Pointer to the node, which is _not_ removed from the tree. If the tree
+ *     contains no nodes, returns NULL.
+ */
+extern struct bpf_rb_node *bpf_rbtree_first(struct bpf_rb_root *root) __ksym;
+
 #endif