/usr/include/ntirpc/misc/rbtree.h is in libntirpc-dev 1.3.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | /* Left-leaning red/black trees */
#ifndef _OPR_RBTREE_H
#define _OPR_RBTREE_H 1
#include <stdbool.h>
#include <stdint.h>
#include <misc/opr.h>
/* from opr.h */
#define opr_containerof(ptr, structure, member) \
((structure *)((char *)(ptr)-(char *)(&((structure *)NULL)->member)))
struct opr_rbtree_node {
struct opr_rbtree_node *left;
struct opr_rbtree_node *right;
struct opr_rbtree_node *parent;
uint32_t red;
uint32_t gen; /* generation number */
};
typedef int (*opr_rbtree_cmpf_t) (const struct opr_rbtree_node *lhs,
const struct opr_rbtree_node *rhs);
struct opr_rbtree {
struct opr_rbtree_node *root;
opr_rbtree_cmpf_t cmpf;
uint64_t size;
uint64_t gen; /* generation number */
};
extern void opr_rbtree_init(struct opr_rbtree *head, opr_rbtree_cmpf_t cmpf);
extern struct opr_rbtree_node *opr_rbtree_first(struct opr_rbtree *head);
extern struct opr_rbtree_node *opr_rbtree_last(struct opr_rbtree *head);
extern struct opr_rbtree_node *opr_rbtree_next(struct opr_rbtree_node *node);
extern struct opr_rbtree_node *opr_rbtree_prev(struct opr_rbtree_node *node);
extern struct opr_rbtree_node *opr_rbtree_lookup(struct opr_rbtree *head,
struct opr_rbtree_node *node);
extern struct opr_rbtree_node *opr_rbtree_insert(struct opr_rbtree *head,
struct opr_rbtree_node *node);
extern void opr_rbtree_insert_at(struct opr_rbtree *head,
struct opr_rbtree_node *parent,
struct opr_rbtree_node **childptr,
struct opr_rbtree_node *node);
extern void opr_rbtree_remove(struct opr_rbtree *head,
struct opr_rbtree_node *node);
extern void opr_rbtree_replace(struct opr_rbtree *head,
struct opr_rbtree_node *old,
struct opr_rbtree_node *replacement);
static inline bool opr_rbtree_node_valid(struct opr_rbtree_node *node)
{
return (node->gen != 0);
}
static inline unsigned long opr_rbtree_size(struct opr_rbtree *head)
{
return (head->size);
}
#endif /* _OPR_RBTREE_H */
|