summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-04 16:12:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-16 07:22:11 +0200
commit22d9575fd038721cc7462911275336f1b5255381 (patch)
tree1935a51bcbdeaa869f78ef5e8d2b48d96321729c /cpukit
parentlinux: Simplify <linux/rbtree.h> (diff)
downloadrtems-22d9575fd038721cc7462911275336f1b5255381.tar.bz2
linux: Add rbtree_postorder_for_each_entry_safe()
Update #3465.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/include/linux/rbtree.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/cpukit/include/linux/rbtree.h b/cpukit/include/linux/rbtree.h
index e1da2c7b9a..53c777e8c1 100644
--- a/cpukit/include/linux/rbtree.h
+++ b/cpukit/include/linux/rbtree.h
@@ -122,4 +122,20 @@ static inline struct rb_node *rb_parent( struct rb_node *node )
return _RBTree_Parent( node );
}
+#define rbtree_postorder_for_each_entry_safe( node, next, root, field ) \
+ for ( \
+ node = _RBTree_Postorder_first( \
+ (RBTree_Control *) root, \
+ (size_t) ( (char *) &node->field - (char *) node ) \
+ ); \
+ node != NULL && ( \
+ next = _RBTree_Postorder_next( \
+ &node->field, \
+ (size_t) ( (char *) &node->field - (char *) node ) \
+ ), \
+ node != NULL \
+ ); \
+ node = next \
+ )
+
#endif /* _LINUX_RBTREE_H */