On 24.07.26 00:30, Connor Kite wrote:
Add a wrapper to iova-tree to call g_tree_foreach. Provies a means to
execute some function on each node of the iova-tree.
Signed-off-by: Connor Kite <[email protected]>
---
include/qemu/iova-tree.h | 13 +++++++++++++
util/iova-tree.c | 5 +++++
2 files changed, 18 insertions(+)
diff --git a/include/qemu/iova-tree.h b/include/qemu/iova-tree.h
index 14e82a22d5..4d77f4dc57 100644
--- a/include/qemu/iova-tree.h
+++ b/include/qemu/iova-tree.h
@@ -161,4 +161,17 @@ int iova_tree_alloc_map(IOVATree *tree, DMAMap *map,
hwaddr iova_begin,
*/
void iova_tree_destroy(IOVATree *tree);
+/**
+ * iova_tree_foreach:
+ *
+ * @tree: the iova tree to traverse
+ * @func: the function called at every node. A true return value ends traversal
Can you document roughly what the function looks like? Because the type
(`GTraverseFunc`) is not defined in qemu. I know it has a boolean as a
return type, and that one argument of it is going to be `gpointer data`,
but surely it will also take a tree element.
Hanna
+ * @data: an argument passed to func
+ *
+ * Wrapper to call g_tree_foreach on underlying g_tree
+ *
+ * Return: None
+ */
+void iova_tree_foreach(IOVATree *tree, GTraverseFunc func, gpointer data);
+
#endif