aboutsummaryrefslogtreecommitdiffstats
path: root/rust/helpers/rbtree.c
diff options
context:
space:
mode:
authorWedson Almeida Filho <[email protected]>2024-08-22 16:37:53 +0000
committerMiguel Ojeda <[email protected]>2024-08-31 15:35:08 +0000
commita0d13aac7022f95ec161c18d18e3d81172666ed8 (patch)
tree20edfa995ec14cf2b1d1a7d89a2f5ec6fbe503f2 /rust/helpers/rbtree.c
parentrust: enable rustdoc's `--generate-link-to-definition` (diff)
downloadkernel-a0d13aac7022f95ec161c18d18e3d81172666ed8.tar.gz
kernel-a0d13aac7022f95ec161c18d18e3d81172666ed8.zip
rust: rbtree: add red-black tree implementation backed by the C version
The rust rbtree exposes a map-like interface over keys and values, backed by the kernel red-black tree implementation. Values can be inserted, deleted, and retrieved from a `RBTree` by key. This base abstraction is used by binder to store key/value pairs and perform lookups, for example the patch "[PATCH RFC 03/20] rust_binder: add threading support" in the binder RFC [1]. Link: https://lore.kernel.org/rust-for-linux/[email protected]/ [1] Signed-off-by: Wedson Almeida Filho <[email protected]> Reviewed-by: Alice Ryhl <[email protected]> Tested-by: Alice Ryhl <[email protected]> Reviewed-by: Boqun Feng <[email protected]> Reviewed-by: Benno Lossin <[email protected]> Signed-off-by: Matt Gilbride <[email protected]> Link: https://lore.kernel.org/r/[email protected] [ Updated link to docs.kernel.org. - Miguel ] Signed-off-by: Miguel Ojeda <[email protected]>
Diffstat (limited to 'rust/helpers/rbtree.c')
-rw-r--r--rust/helpers/rbtree.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/rust/helpers/rbtree.c b/rust/helpers/rbtree.c
new file mode 100644
index 000000000000..6d404b84a9b5
--- /dev/null
+++ b/rust/helpers/rbtree.c
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <linux/rbtree.h>
+
+void rust_helper_rb_link_node(struct rb_node *node, struct rb_node *parent,
+ struct rb_node **rb_link)
+{
+ rb_link_node(node, parent, rb_link);
+}