Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051/* SPDX-License-Identifier: GPL-2.0-or-later */#ifndef _LINUX_RBTREE_TYPES_H#define _LINUX_RBTREE_TYPES_H
struct rb_node { unsigned long __rb_parent_color; struct rb_node *rb_right; struct rb_node *rb_left;} __attribute__((aligned(sizeof(long))));/* The alignment might seem pointless, but allegedly CRIS needs it */
struct rb_node_linked { struct rb_node node; struct rb_node_linked *prev; struct rb_node_linked *next;};
struct rb_root { struct rb_node *rb_node;};
/* * Leftmost-cached rbtrees. * * We do not cache the rightmost node based on footprint * size vs number of potential users that could benefit * from O(1) rb_last(). Just not worth it, users that want * this feature can always implement the logic explicitly. * Furthermore, users that want to cache both pointers may * find it a bit asymmetric, but that's ok. */struct rb_root_cached { struct rb_root rb_root; struct rb_node *rb_leftmost;};
/* * Leftmost tree with links. This would allow a trivial rb_rightmost update, * but that has been omitted due to the lack of users. */struct rb_root_linked { struct rb_root rb_root; struct rb_node_linked *rb_leftmost;};
#define RB_ROOT (struct rb_root) { NULL, }#define RB_ROOT_CACHED (struct rb_root_cached) { {NULL, }, NULL }#define RB_ROOT_LINKED (struct rb_root_linked) { {NULL, }, NULL }
#endif