All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] rbtree: Introduce rb_for_each_entry
@ 2010-01-13 13:01 Arnaldo Carvalho de Melo
  2010-01-13 13:01 ` [PATCH 2/3] perf tools: Use rb_for_each_entry Arnaldo Carvalho de Melo
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-01-13 13:01 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo,
	Frédéric Weisbecker, Mike Galbraith, Peter Zijlstra,
	Paul Mackerras

From: Arnaldo Carvalho de Melo <acme@redhat.com>

Similar to list_for_each_entry, helps reducing boilerplate in many
places and makes rbtrees closer to list.h macros.

First conversion will be in the tools/perf.

Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 include/linux/rbtree.h |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index 9c29541..044b150 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -158,4 +158,16 @@ static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
 	*rb_link = node;
 }
 
+/**
+ * rb_for_each_entry - iterate over rbtree of given type
+ * @pos:	the type * to hold the current entry being traversed
+ * @node:	the rb_node to hold the current entry being traversed
+ * @root:	the root for your tree.
+ * @member:	the name of the rb_node within the struct.
+ */
+#define rb_for_each_entry(pos, node, root, member)			\
+	for (node = rb_first(root);					\
+	     node && (pos = rb_entry(node, typeof(*pos), member));	\
+	     node = rb_next(node))
+
 #endif	/* _LINUX_RBTREE_H */
-- 
1.6.2.5


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2010-01-13 15:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-13 13:01 [PATCH 1/3] rbtree: Introduce rb_for_each_entry Arnaldo Carvalho de Melo
2010-01-13 13:01 ` [PATCH 2/3] perf tools: Use rb_for_each_entry Arnaldo Carvalho de Melo
2010-01-13 13:01 ` [PATCH 3/3] perf tools: Encode kernel module mappings in perf.data Arnaldo Carvalho de Melo
2010-01-13 13:16 ` [PATCH 1/3] rbtree: Introduce rb_for_each_entry Peter Zijlstra
2010-01-13 13:34   ` Frederic Weisbecker
2010-01-13 13:36     ` Peter Zijlstra
2010-01-13 13:52     ` Arnaldo Carvalho de Melo
2010-01-13 13:58       ` Peter Zijlstra
2010-01-13 14:13         ` Arnaldo Carvalho de Melo
2010-01-13 14:18           ` Peter Zijlstra
2010-01-13 14:22             ` Arnaldo Carvalho de Melo
2010-01-13 14:28             ` Frederic Weisbecker
2010-01-13 15:26             ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.