/src/haproxy/include/import/ebpttree.h
Line | Count | Source |
1 | | /* |
2 | | * Elastic Binary Trees - macros and structures for operations on pointer nodes. |
3 | | * Version 6.0.6 |
4 | | * (C) 2002-2011 - Willy Tarreau <w@1wt.eu> |
5 | | * |
6 | | * This library is free software; you can redistribute it and/or |
7 | | * modify it under the terms of the GNU Lesser General Public |
8 | | * License as published by the Free Software Foundation, version 2.1 |
9 | | * exclusively. |
10 | | * |
11 | | * This library is distributed in the hope that it will be useful, |
12 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | | * Lesser General Public License for more details. |
15 | | * |
16 | | * You should have received a copy of the GNU Lesser General Public |
17 | | * License along with this library; if not, write to the Free Software |
18 | | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 | | */ |
20 | | |
21 | | #ifndef _EBPTTREE_H |
22 | | #define _EBPTTREE_H |
23 | | |
24 | | #include "ebtree.h" |
25 | | #include "eb32tree.h" |
26 | | #include "eb64tree.h" |
27 | | |
28 | | |
29 | | /* Return the structure of type <type> whose member <member> points to <ptr> */ |
30 | 0 | #define ebpt_entry(ptr, type, member) container_of(ptr, type, member) |
31 | | |
32 | | /* |
33 | | * Exported functions and macros. |
34 | | * Many of them are always inlined because they are extremely small, and |
35 | | * are generally called at most once or twice in a program. |
36 | | */ |
37 | | |
38 | | /* Return leftmost node in the tree, or NULL if none */ |
39 | | static forceinline struct ebpt_node *ebpt_first(struct eb_root *root) |
40 | 0 | { |
41 | 0 | return ebpt_entry(eb_first(root), struct ebpt_node, node); |
42 | 0 | } Unexecuted instantiation: tools.c:ebpt_first Unexecuted instantiation: cfgparse.c:ebpt_first Unexecuted instantiation: connection.c:ebpt_first Unexecuted instantiation: haproxy.c:ebpt_first Unexecuted instantiation: http_ana.c:ebpt_first Unexecuted instantiation: http_ext.c:ebpt_first Unexecuted instantiation: http_htx.c:ebpt_first Unexecuted instantiation: peers.c:ebpt_first Unexecuted instantiation: proxy.c:ebpt_first Unexecuted instantiation: server.c:ebpt_first Unexecuted instantiation: sock.c:ebpt_first Unexecuted instantiation: sock_inet.c:ebpt_first Unexecuted instantiation: stats-html.c:ebpt_first Unexecuted instantiation: stats.c:ebpt_first Unexecuted instantiation: stream.c:ebpt_first Unexecuted instantiation: tcpcheck.c:ebpt_first Unexecuted instantiation: backend.c:ebpt_first Unexecuted instantiation: cfgparse-listen.c:ebpt_first Unexecuted instantiation: check.c:ebpt_first Unexecuted instantiation: dict.c:ebpt_first Unexecuted instantiation: ebimtree.c:ebpt_first Unexecuted instantiation: ebistree.c:ebpt_first Unexecuted instantiation: filters.c:ebpt_first Unexecuted instantiation: flt_http_comp.c:ebpt_first Unexecuted instantiation: haterm.c:ebpt_first Unexecuted instantiation: http_fetch.c:ebpt_first Unexecuted instantiation: pattern.c:ebpt_first Unexecuted instantiation: proto_tcp.c:ebpt_first Unexecuted instantiation: cache.c:ebpt_first Unexecuted instantiation: fcgi-app.c:ebpt_first Unexecuted instantiation: h1_htx.c:ebpt_first |
43 | | |
44 | | /* Return rightmost node in the tree, or NULL if none */ |
45 | | static forceinline struct ebpt_node *ebpt_last(struct eb_root *root) |
46 | 0 | { |
47 | 0 | return ebpt_entry(eb_last(root), struct ebpt_node, node); |
48 | 0 | } Unexecuted instantiation: tools.c:ebpt_last Unexecuted instantiation: cfgparse.c:ebpt_last Unexecuted instantiation: connection.c:ebpt_last Unexecuted instantiation: haproxy.c:ebpt_last Unexecuted instantiation: http_ana.c:ebpt_last Unexecuted instantiation: http_ext.c:ebpt_last Unexecuted instantiation: http_htx.c:ebpt_last Unexecuted instantiation: peers.c:ebpt_last Unexecuted instantiation: proxy.c:ebpt_last Unexecuted instantiation: server.c:ebpt_last Unexecuted instantiation: sock.c:ebpt_last Unexecuted instantiation: sock_inet.c:ebpt_last Unexecuted instantiation: stats-html.c:ebpt_last Unexecuted instantiation: stats.c:ebpt_last Unexecuted instantiation: stream.c:ebpt_last Unexecuted instantiation: tcpcheck.c:ebpt_last Unexecuted instantiation: backend.c:ebpt_last Unexecuted instantiation: cfgparse-listen.c:ebpt_last Unexecuted instantiation: check.c:ebpt_last Unexecuted instantiation: dict.c:ebpt_last Unexecuted instantiation: ebimtree.c:ebpt_last Unexecuted instantiation: ebistree.c:ebpt_last Unexecuted instantiation: filters.c:ebpt_last Unexecuted instantiation: flt_http_comp.c:ebpt_last Unexecuted instantiation: haterm.c:ebpt_last Unexecuted instantiation: http_fetch.c:ebpt_last Unexecuted instantiation: pattern.c:ebpt_last Unexecuted instantiation: proto_tcp.c:ebpt_last Unexecuted instantiation: cache.c:ebpt_last Unexecuted instantiation: fcgi-app.c:ebpt_last Unexecuted instantiation: h1_htx.c:ebpt_last |
49 | | |
50 | | /* Return next node in the tree, or NULL if none */ |
51 | | static forceinline struct ebpt_node *ebpt_next(struct ebpt_node *ebpt) |
52 | 0 | { |
53 | 0 | return ebpt_entry(eb_next(&ebpt->node), struct ebpt_node, node); |
54 | 0 | } Unexecuted instantiation: tools.c:ebpt_next Unexecuted instantiation: cfgparse.c:ebpt_next Unexecuted instantiation: connection.c:ebpt_next Unexecuted instantiation: haproxy.c:ebpt_next Unexecuted instantiation: http_ana.c:ebpt_next Unexecuted instantiation: http_ext.c:ebpt_next Unexecuted instantiation: http_htx.c:ebpt_next Unexecuted instantiation: peers.c:ebpt_next Unexecuted instantiation: proxy.c:ebpt_next Unexecuted instantiation: server.c:ebpt_next Unexecuted instantiation: sock.c:ebpt_next Unexecuted instantiation: sock_inet.c:ebpt_next Unexecuted instantiation: stats-html.c:ebpt_next Unexecuted instantiation: stats.c:ebpt_next Unexecuted instantiation: stream.c:ebpt_next Unexecuted instantiation: tcpcheck.c:ebpt_next Unexecuted instantiation: backend.c:ebpt_next Unexecuted instantiation: cfgparse-listen.c:ebpt_next Unexecuted instantiation: check.c:ebpt_next Unexecuted instantiation: dict.c:ebpt_next Unexecuted instantiation: ebimtree.c:ebpt_next Unexecuted instantiation: ebistree.c:ebpt_next Unexecuted instantiation: filters.c:ebpt_next Unexecuted instantiation: flt_http_comp.c:ebpt_next Unexecuted instantiation: haterm.c:ebpt_next Unexecuted instantiation: http_fetch.c:ebpt_next Unexecuted instantiation: pattern.c:ebpt_next Unexecuted instantiation: proto_tcp.c:ebpt_next Unexecuted instantiation: cache.c:ebpt_next Unexecuted instantiation: fcgi-app.c:ebpt_next Unexecuted instantiation: h1_htx.c:ebpt_next |
55 | | |
56 | | /* Return previous node in the tree, or NULL if none */ |
57 | | static forceinline struct ebpt_node *ebpt_prev(struct ebpt_node *ebpt) |
58 | 0 | { |
59 | 0 | return ebpt_entry(eb_prev(&ebpt->node), struct ebpt_node, node); |
60 | 0 | } Unexecuted instantiation: tools.c:ebpt_prev Unexecuted instantiation: cfgparse.c:ebpt_prev Unexecuted instantiation: connection.c:ebpt_prev Unexecuted instantiation: haproxy.c:ebpt_prev Unexecuted instantiation: http_ana.c:ebpt_prev Unexecuted instantiation: http_ext.c:ebpt_prev Unexecuted instantiation: http_htx.c:ebpt_prev Unexecuted instantiation: peers.c:ebpt_prev Unexecuted instantiation: proxy.c:ebpt_prev Unexecuted instantiation: server.c:ebpt_prev Unexecuted instantiation: sock.c:ebpt_prev Unexecuted instantiation: sock_inet.c:ebpt_prev Unexecuted instantiation: stats-html.c:ebpt_prev Unexecuted instantiation: stats.c:ebpt_prev Unexecuted instantiation: stream.c:ebpt_prev Unexecuted instantiation: tcpcheck.c:ebpt_prev Unexecuted instantiation: backend.c:ebpt_prev Unexecuted instantiation: cfgparse-listen.c:ebpt_prev Unexecuted instantiation: check.c:ebpt_prev Unexecuted instantiation: dict.c:ebpt_prev Unexecuted instantiation: ebimtree.c:ebpt_prev Unexecuted instantiation: ebistree.c:ebpt_prev Unexecuted instantiation: filters.c:ebpt_prev Unexecuted instantiation: flt_http_comp.c:ebpt_prev Unexecuted instantiation: haterm.c:ebpt_prev Unexecuted instantiation: http_fetch.c:ebpt_prev Unexecuted instantiation: pattern.c:ebpt_prev Unexecuted instantiation: proto_tcp.c:ebpt_prev Unexecuted instantiation: cache.c:ebpt_prev Unexecuted instantiation: fcgi-app.c:ebpt_prev Unexecuted instantiation: h1_htx.c:ebpt_prev |
61 | | |
62 | | /* Return next leaf node within a duplicate sub-tree, or NULL if none. */ |
63 | | static inline struct ebpt_node *ebpt_next_dup(struct ebpt_node *ebpt) |
64 | 0 | { |
65 | 0 | return ebpt_entry(eb_next_dup(&ebpt->node), struct ebpt_node, node); |
66 | 0 | } Unexecuted instantiation: tools.c:ebpt_next_dup Unexecuted instantiation: cfgparse.c:ebpt_next_dup Unexecuted instantiation: connection.c:ebpt_next_dup Unexecuted instantiation: haproxy.c:ebpt_next_dup Unexecuted instantiation: http_ana.c:ebpt_next_dup Unexecuted instantiation: http_ext.c:ebpt_next_dup Unexecuted instantiation: http_htx.c:ebpt_next_dup Unexecuted instantiation: peers.c:ebpt_next_dup Unexecuted instantiation: proxy.c:ebpt_next_dup Unexecuted instantiation: server.c:ebpt_next_dup Unexecuted instantiation: sock.c:ebpt_next_dup Unexecuted instantiation: sock_inet.c:ebpt_next_dup Unexecuted instantiation: stats-html.c:ebpt_next_dup Unexecuted instantiation: stats.c:ebpt_next_dup Unexecuted instantiation: stream.c:ebpt_next_dup Unexecuted instantiation: tcpcheck.c:ebpt_next_dup Unexecuted instantiation: backend.c:ebpt_next_dup Unexecuted instantiation: cfgparse-listen.c:ebpt_next_dup Unexecuted instantiation: check.c:ebpt_next_dup Unexecuted instantiation: dict.c:ebpt_next_dup Unexecuted instantiation: ebimtree.c:ebpt_next_dup Unexecuted instantiation: ebistree.c:ebpt_next_dup Unexecuted instantiation: filters.c:ebpt_next_dup Unexecuted instantiation: flt_http_comp.c:ebpt_next_dup Unexecuted instantiation: haterm.c:ebpt_next_dup Unexecuted instantiation: http_fetch.c:ebpt_next_dup Unexecuted instantiation: pattern.c:ebpt_next_dup Unexecuted instantiation: proto_tcp.c:ebpt_next_dup Unexecuted instantiation: cache.c:ebpt_next_dup Unexecuted instantiation: fcgi-app.c:ebpt_next_dup Unexecuted instantiation: h1_htx.c:ebpt_next_dup |
67 | | |
68 | | /* Return previous leaf node within a duplicate sub-tree, or NULL if none. */ |
69 | | static inline struct ebpt_node *ebpt_prev_dup(struct ebpt_node *ebpt) |
70 | 0 | { |
71 | 0 | return ebpt_entry(eb_prev_dup(&ebpt->node), struct ebpt_node, node); |
72 | 0 | } Unexecuted instantiation: tools.c:ebpt_prev_dup Unexecuted instantiation: cfgparse.c:ebpt_prev_dup Unexecuted instantiation: connection.c:ebpt_prev_dup Unexecuted instantiation: haproxy.c:ebpt_prev_dup Unexecuted instantiation: http_ana.c:ebpt_prev_dup Unexecuted instantiation: http_ext.c:ebpt_prev_dup Unexecuted instantiation: http_htx.c:ebpt_prev_dup Unexecuted instantiation: peers.c:ebpt_prev_dup Unexecuted instantiation: proxy.c:ebpt_prev_dup Unexecuted instantiation: server.c:ebpt_prev_dup Unexecuted instantiation: sock.c:ebpt_prev_dup Unexecuted instantiation: sock_inet.c:ebpt_prev_dup Unexecuted instantiation: stats-html.c:ebpt_prev_dup Unexecuted instantiation: stats.c:ebpt_prev_dup Unexecuted instantiation: stream.c:ebpt_prev_dup Unexecuted instantiation: tcpcheck.c:ebpt_prev_dup Unexecuted instantiation: backend.c:ebpt_prev_dup Unexecuted instantiation: cfgparse-listen.c:ebpt_prev_dup Unexecuted instantiation: check.c:ebpt_prev_dup Unexecuted instantiation: dict.c:ebpt_prev_dup Unexecuted instantiation: ebimtree.c:ebpt_prev_dup Unexecuted instantiation: ebistree.c:ebpt_prev_dup Unexecuted instantiation: filters.c:ebpt_prev_dup Unexecuted instantiation: flt_http_comp.c:ebpt_prev_dup Unexecuted instantiation: haterm.c:ebpt_prev_dup Unexecuted instantiation: http_fetch.c:ebpt_prev_dup Unexecuted instantiation: pattern.c:ebpt_prev_dup Unexecuted instantiation: proto_tcp.c:ebpt_prev_dup Unexecuted instantiation: cache.c:ebpt_prev_dup Unexecuted instantiation: fcgi-app.c:ebpt_prev_dup Unexecuted instantiation: h1_htx.c:ebpt_prev_dup |
73 | | |
74 | | /* Return next node in the tree, skipping duplicates, or NULL if none */ |
75 | | static forceinline struct ebpt_node *ebpt_next_unique(struct ebpt_node *ebpt) |
76 | 0 | { |
77 | 0 | return ebpt_entry(eb_next_unique(&ebpt->node), struct ebpt_node, node); |
78 | 0 | } Unexecuted instantiation: tools.c:ebpt_next_unique Unexecuted instantiation: cfgparse.c:ebpt_next_unique Unexecuted instantiation: connection.c:ebpt_next_unique Unexecuted instantiation: haproxy.c:ebpt_next_unique Unexecuted instantiation: http_ana.c:ebpt_next_unique Unexecuted instantiation: http_ext.c:ebpt_next_unique Unexecuted instantiation: http_htx.c:ebpt_next_unique Unexecuted instantiation: peers.c:ebpt_next_unique Unexecuted instantiation: proxy.c:ebpt_next_unique Unexecuted instantiation: server.c:ebpt_next_unique Unexecuted instantiation: sock.c:ebpt_next_unique Unexecuted instantiation: sock_inet.c:ebpt_next_unique Unexecuted instantiation: stats-html.c:ebpt_next_unique Unexecuted instantiation: stats.c:ebpt_next_unique Unexecuted instantiation: stream.c:ebpt_next_unique Unexecuted instantiation: tcpcheck.c:ebpt_next_unique Unexecuted instantiation: backend.c:ebpt_next_unique Unexecuted instantiation: cfgparse-listen.c:ebpt_next_unique Unexecuted instantiation: check.c:ebpt_next_unique Unexecuted instantiation: dict.c:ebpt_next_unique Unexecuted instantiation: ebimtree.c:ebpt_next_unique Unexecuted instantiation: ebistree.c:ebpt_next_unique Unexecuted instantiation: filters.c:ebpt_next_unique Unexecuted instantiation: flt_http_comp.c:ebpt_next_unique Unexecuted instantiation: haterm.c:ebpt_next_unique Unexecuted instantiation: http_fetch.c:ebpt_next_unique Unexecuted instantiation: pattern.c:ebpt_next_unique Unexecuted instantiation: proto_tcp.c:ebpt_next_unique Unexecuted instantiation: cache.c:ebpt_next_unique Unexecuted instantiation: fcgi-app.c:ebpt_next_unique Unexecuted instantiation: h1_htx.c:ebpt_next_unique |
79 | | |
80 | | /* Return previous node in the tree, skipping duplicates, or NULL if none */ |
81 | | static forceinline struct ebpt_node *ebpt_prev_unique(struct ebpt_node *ebpt) |
82 | 0 | { |
83 | 0 | return ebpt_entry(eb_prev_unique(&ebpt->node), struct ebpt_node, node); |
84 | 0 | } Unexecuted instantiation: tools.c:ebpt_prev_unique Unexecuted instantiation: cfgparse.c:ebpt_prev_unique Unexecuted instantiation: connection.c:ebpt_prev_unique Unexecuted instantiation: haproxy.c:ebpt_prev_unique Unexecuted instantiation: http_ana.c:ebpt_prev_unique Unexecuted instantiation: http_ext.c:ebpt_prev_unique Unexecuted instantiation: http_htx.c:ebpt_prev_unique Unexecuted instantiation: peers.c:ebpt_prev_unique Unexecuted instantiation: proxy.c:ebpt_prev_unique Unexecuted instantiation: server.c:ebpt_prev_unique Unexecuted instantiation: sock.c:ebpt_prev_unique Unexecuted instantiation: sock_inet.c:ebpt_prev_unique Unexecuted instantiation: stats-html.c:ebpt_prev_unique Unexecuted instantiation: stats.c:ebpt_prev_unique Unexecuted instantiation: stream.c:ebpt_prev_unique Unexecuted instantiation: tcpcheck.c:ebpt_prev_unique Unexecuted instantiation: backend.c:ebpt_prev_unique Unexecuted instantiation: cfgparse-listen.c:ebpt_prev_unique Unexecuted instantiation: check.c:ebpt_prev_unique Unexecuted instantiation: dict.c:ebpt_prev_unique Unexecuted instantiation: ebimtree.c:ebpt_prev_unique Unexecuted instantiation: ebistree.c:ebpt_prev_unique Unexecuted instantiation: filters.c:ebpt_prev_unique Unexecuted instantiation: flt_http_comp.c:ebpt_prev_unique Unexecuted instantiation: haterm.c:ebpt_prev_unique Unexecuted instantiation: http_fetch.c:ebpt_prev_unique Unexecuted instantiation: pattern.c:ebpt_prev_unique Unexecuted instantiation: proto_tcp.c:ebpt_prev_unique Unexecuted instantiation: cache.c:ebpt_prev_unique Unexecuted instantiation: fcgi-app.c:ebpt_prev_unique Unexecuted instantiation: h1_htx.c:ebpt_prev_unique |
85 | | |
86 | | /* Delete node from the tree if it was linked in. Mark the node unused. Note |
87 | | * that this function relies on a non-inlined generic function: eb_delete. |
88 | | */ |
89 | | static forceinline void ebpt_delete(struct ebpt_node *ebpt) |
90 | 0 | { |
91 | 0 | eb_delete(&ebpt->node); |
92 | 0 | } Unexecuted instantiation: tools.c:ebpt_delete Unexecuted instantiation: cfgparse.c:ebpt_delete Unexecuted instantiation: connection.c:ebpt_delete Unexecuted instantiation: haproxy.c:ebpt_delete Unexecuted instantiation: http_ana.c:ebpt_delete Unexecuted instantiation: http_ext.c:ebpt_delete Unexecuted instantiation: http_htx.c:ebpt_delete Unexecuted instantiation: peers.c:ebpt_delete Unexecuted instantiation: proxy.c:ebpt_delete Unexecuted instantiation: server.c:ebpt_delete Unexecuted instantiation: sock.c:ebpt_delete Unexecuted instantiation: sock_inet.c:ebpt_delete Unexecuted instantiation: stats-html.c:ebpt_delete Unexecuted instantiation: stats.c:ebpt_delete Unexecuted instantiation: stream.c:ebpt_delete Unexecuted instantiation: tcpcheck.c:ebpt_delete Unexecuted instantiation: backend.c:ebpt_delete Unexecuted instantiation: cfgparse-listen.c:ebpt_delete Unexecuted instantiation: check.c:ebpt_delete Unexecuted instantiation: dict.c:ebpt_delete Unexecuted instantiation: ebimtree.c:ebpt_delete Unexecuted instantiation: ebistree.c:ebpt_delete Unexecuted instantiation: filters.c:ebpt_delete Unexecuted instantiation: flt_http_comp.c:ebpt_delete Unexecuted instantiation: haterm.c:ebpt_delete Unexecuted instantiation: http_fetch.c:ebpt_delete Unexecuted instantiation: pattern.c:ebpt_delete Unexecuted instantiation: proto_tcp.c:ebpt_delete Unexecuted instantiation: cache.c:ebpt_delete Unexecuted instantiation: fcgi-app.c:ebpt_delete Unexecuted instantiation: h1_htx.c:ebpt_delete |
93 | | |
94 | | /* |
95 | | * The following functions are inlined but derived from the integer versions. |
96 | | */ |
97 | | static forceinline struct ebpt_node *ebpt_lookup(struct eb_root *root, void *x) |
98 | 0 | { |
99 | 0 | if (sizeof(void *) == 4) |
100 | 0 | return (struct ebpt_node *)eb32_lookup(root, (u32)(PTR_INT_TYPE)x); |
101 | 0 | else |
102 | 0 | return (struct ebpt_node *)eb64_lookup(root, (u64)(PTR_INT_TYPE)x); |
103 | 0 | } Unexecuted instantiation: tools.c:ebpt_lookup Unexecuted instantiation: cfgparse.c:ebpt_lookup Unexecuted instantiation: connection.c:ebpt_lookup Unexecuted instantiation: haproxy.c:ebpt_lookup Unexecuted instantiation: http_ana.c:ebpt_lookup Unexecuted instantiation: http_ext.c:ebpt_lookup Unexecuted instantiation: http_htx.c:ebpt_lookup Unexecuted instantiation: peers.c:ebpt_lookup Unexecuted instantiation: proxy.c:ebpt_lookup Unexecuted instantiation: server.c:ebpt_lookup Unexecuted instantiation: sock.c:ebpt_lookup Unexecuted instantiation: sock_inet.c:ebpt_lookup Unexecuted instantiation: stats-html.c:ebpt_lookup Unexecuted instantiation: stats.c:ebpt_lookup Unexecuted instantiation: stream.c:ebpt_lookup Unexecuted instantiation: tcpcheck.c:ebpt_lookup Unexecuted instantiation: backend.c:ebpt_lookup Unexecuted instantiation: cfgparse-listen.c:ebpt_lookup Unexecuted instantiation: check.c:ebpt_lookup Unexecuted instantiation: dict.c:ebpt_lookup Unexecuted instantiation: ebimtree.c:ebpt_lookup Unexecuted instantiation: ebistree.c:ebpt_lookup Unexecuted instantiation: filters.c:ebpt_lookup Unexecuted instantiation: flt_http_comp.c:ebpt_lookup Unexecuted instantiation: haterm.c:ebpt_lookup Unexecuted instantiation: http_fetch.c:ebpt_lookup Unexecuted instantiation: pattern.c:ebpt_lookup Unexecuted instantiation: proto_tcp.c:ebpt_lookup Unexecuted instantiation: cache.c:ebpt_lookup Unexecuted instantiation: fcgi-app.c:ebpt_lookup Unexecuted instantiation: h1_htx.c:ebpt_lookup |
104 | | |
105 | | static forceinline struct ebpt_node *ebpt_lookup_le(struct eb_root *root, void *x) |
106 | 0 | { |
107 | 0 | if (sizeof(void *) == 4) |
108 | 0 | return (struct ebpt_node *)eb32_lookup_le(root, (u32)(PTR_INT_TYPE)x); |
109 | 0 | else |
110 | 0 | return (struct ebpt_node *)eb64_lookup_le(root, (u64)(PTR_INT_TYPE)x); |
111 | 0 | } Unexecuted instantiation: tools.c:ebpt_lookup_le Unexecuted instantiation: cfgparse.c:ebpt_lookup_le Unexecuted instantiation: connection.c:ebpt_lookup_le Unexecuted instantiation: haproxy.c:ebpt_lookup_le Unexecuted instantiation: http_ana.c:ebpt_lookup_le Unexecuted instantiation: http_ext.c:ebpt_lookup_le Unexecuted instantiation: http_htx.c:ebpt_lookup_le Unexecuted instantiation: peers.c:ebpt_lookup_le Unexecuted instantiation: proxy.c:ebpt_lookup_le Unexecuted instantiation: server.c:ebpt_lookup_le Unexecuted instantiation: sock.c:ebpt_lookup_le Unexecuted instantiation: sock_inet.c:ebpt_lookup_le Unexecuted instantiation: stats-html.c:ebpt_lookup_le Unexecuted instantiation: stats.c:ebpt_lookup_le Unexecuted instantiation: stream.c:ebpt_lookup_le Unexecuted instantiation: tcpcheck.c:ebpt_lookup_le Unexecuted instantiation: backend.c:ebpt_lookup_le Unexecuted instantiation: cfgparse-listen.c:ebpt_lookup_le Unexecuted instantiation: check.c:ebpt_lookup_le Unexecuted instantiation: dict.c:ebpt_lookup_le Unexecuted instantiation: ebimtree.c:ebpt_lookup_le Unexecuted instantiation: ebistree.c:ebpt_lookup_le Unexecuted instantiation: filters.c:ebpt_lookup_le Unexecuted instantiation: flt_http_comp.c:ebpt_lookup_le Unexecuted instantiation: haterm.c:ebpt_lookup_le Unexecuted instantiation: http_fetch.c:ebpt_lookup_le Unexecuted instantiation: pattern.c:ebpt_lookup_le Unexecuted instantiation: proto_tcp.c:ebpt_lookup_le Unexecuted instantiation: cache.c:ebpt_lookup_le Unexecuted instantiation: fcgi-app.c:ebpt_lookup_le Unexecuted instantiation: h1_htx.c:ebpt_lookup_le |
112 | | |
113 | | static forceinline struct ebpt_node *ebpt_lookup_ge(struct eb_root *root, void *x) |
114 | 0 | { |
115 | 0 | if (sizeof(void *) == 4) |
116 | 0 | return (struct ebpt_node *)eb32_lookup_ge(root, (u32)(PTR_INT_TYPE)x); |
117 | 0 | else |
118 | 0 | return (struct ebpt_node *)eb64_lookup_ge(root, (u64)(PTR_INT_TYPE)x); |
119 | 0 | } Unexecuted instantiation: tools.c:ebpt_lookup_ge Unexecuted instantiation: cfgparse.c:ebpt_lookup_ge Unexecuted instantiation: connection.c:ebpt_lookup_ge Unexecuted instantiation: haproxy.c:ebpt_lookup_ge Unexecuted instantiation: http_ana.c:ebpt_lookup_ge Unexecuted instantiation: http_ext.c:ebpt_lookup_ge Unexecuted instantiation: http_htx.c:ebpt_lookup_ge Unexecuted instantiation: peers.c:ebpt_lookup_ge Unexecuted instantiation: proxy.c:ebpt_lookup_ge Unexecuted instantiation: server.c:ebpt_lookup_ge Unexecuted instantiation: sock.c:ebpt_lookup_ge Unexecuted instantiation: sock_inet.c:ebpt_lookup_ge Unexecuted instantiation: stats-html.c:ebpt_lookup_ge Unexecuted instantiation: stats.c:ebpt_lookup_ge Unexecuted instantiation: stream.c:ebpt_lookup_ge Unexecuted instantiation: tcpcheck.c:ebpt_lookup_ge Unexecuted instantiation: backend.c:ebpt_lookup_ge Unexecuted instantiation: cfgparse-listen.c:ebpt_lookup_ge Unexecuted instantiation: check.c:ebpt_lookup_ge Unexecuted instantiation: dict.c:ebpt_lookup_ge Unexecuted instantiation: ebimtree.c:ebpt_lookup_ge Unexecuted instantiation: ebistree.c:ebpt_lookup_ge Unexecuted instantiation: filters.c:ebpt_lookup_ge Unexecuted instantiation: flt_http_comp.c:ebpt_lookup_ge Unexecuted instantiation: haterm.c:ebpt_lookup_ge Unexecuted instantiation: http_fetch.c:ebpt_lookup_ge Unexecuted instantiation: pattern.c:ebpt_lookup_ge Unexecuted instantiation: proto_tcp.c:ebpt_lookup_ge Unexecuted instantiation: cache.c:ebpt_lookup_ge Unexecuted instantiation: fcgi-app.c:ebpt_lookup_ge Unexecuted instantiation: h1_htx.c:ebpt_lookup_ge |
120 | | |
121 | | static forceinline struct ebpt_node *ebpt_insert(struct eb_root *root, struct ebpt_node *new) |
122 | 0 | { |
123 | 0 | if (sizeof(void *) == 4) |
124 | 0 | return (struct ebpt_node *)eb32_insert(root, (struct eb32_node *)new); |
125 | 0 | else |
126 | 0 | return (struct ebpt_node *)eb64_insert(root, (struct eb64_node *)new); |
127 | 0 | } Unexecuted instantiation: tools.c:ebpt_insert Unexecuted instantiation: cfgparse.c:ebpt_insert Unexecuted instantiation: connection.c:ebpt_insert Unexecuted instantiation: haproxy.c:ebpt_insert Unexecuted instantiation: http_ana.c:ebpt_insert Unexecuted instantiation: http_ext.c:ebpt_insert Unexecuted instantiation: http_htx.c:ebpt_insert Unexecuted instantiation: peers.c:ebpt_insert Unexecuted instantiation: proxy.c:ebpt_insert Unexecuted instantiation: server.c:ebpt_insert Unexecuted instantiation: sock.c:ebpt_insert Unexecuted instantiation: sock_inet.c:ebpt_insert Unexecuted instantiation: stats-html.c:ebpt_insert Unexecuted instantiation: stats.c:ebpt_insert Unexecuted instantiation: stream.c:ebpt_insert Unexecuted instantiation: tcpcheck.c:ebpt_insert Unexecuted instantiation: backend.c:ebpt_insert Unexecuted instantiation: cfgparse-listen.c:ebpt_insert Unexecuted instantiation: check.c:ebpt_insert Unexecuted instantiation: dict.c:ebpt_insert Unexecuted instantiation: ebimtree.c:ebpt_insert Unexecuted instantiation: ebistree.c:ebpt_insert Unexecuted instantiation: filters.c:ebpt_insert Unexecuted instantiation: flt_http_comp.c:ebpt_insert Unexecuted instantiation: haterm.c:ebpt_insert Unexecuted instantiation: http_fetch.c:ebpt_insert Unexecuted instantiation: pattern.c:ebpt_insert Unexecuted instantiation: proto_tcp.c:ebpt_insert Unexecuted instantiation: cache.c:ebpt_insert Unexecuted instantiation: fcgi-app.c:ebpt_insert Unexecuted instantiation: h1_htx.c:ebpt_insert |
128 | | |
129 | | /* |
130 | | * The following functions are less likely to be used directly, because |
131 | | * their code is larger. The non-inlined version is preferred. |
132 | | */ |
133 | | |
134 | | /* Delete node from the tree if it was linked in. Mark the node unused. */ |
135 | | static forceinline void __ebpt_delete(struct ebpt_node *ebpt) |
136 | 0 | { |
137 | 0 | __eb_delete(&ebpt->node); |
138 | 0 | } Unexecuted instantiation: tools.c:__ebpt_delete Unexecuted instantiation: cfgparse.c:__ebpt_delete Unexecuted instantiation: connection.c:__ebpt_delete Unexecuted instantiation: haproxy.c:__ebpt_delete Unexecuted instantiation: http_ana.c:__ebpt_delete Unexecuted instantiation: http_ext.c:__ebpt_delete Unexecuted instantiation: http_htx.c:__ebpt_delete Unexecuted instantiation: peers.c:__ebpt_delete Unexecuted instantiation: proxy.c:__ebpt_delete Unexecuted instantiation: server.c:__ebpt_delete Unexecuted instantiation: sock.c:__ebpt_delete Unexecuted instantiation: sock_inet.c:__ebpt_delete Unexecuted instantiation: stats-html.c:__ebpt_delete Unexecuted instantiation: stats.c:__ebpt_delete Unexecuted instantiation: stream.c:__ebpt_delete Unexecuted instantiation: tcpcheck.c:__ebpt_delete Unexecuted instantiation: backend.c:__ebpt_delete Unexecuted instantiation: cfgparse-listen.c:__ebpt_delete Unexecuted instantiation: check.c:__ebpt_delete Unexecuted instantiation: dict.c:__ebpt_delete Unexecuted instantiation: ebimtree.c:__ebpt_delete Unexecuted instantiation: ebistree.c:__ebpt_delete Unexecuted instantiation: filters.c:__ebpt_delete Unexecuted instantiation: flt_http_comp.c:__ebpt_delete Unexecuted instantiation: haterm.c:__ebpt_delete Unexecuted instantiation: http_fetch.c:__ebpt_delete Unexecuted instantiation: pattern.c:__ebpt_delete Unexecuted instantiation: proto_tcp.c:__ebpt_delete Unexecuted instantiation: cache.c:__ebpt_delete Unexecuted instantiation: fcgi-app.c:__ebpt_delete Unexecuted instantiation: h1_htx.c:__ebpt_delete |
139 | | |
140 | | static forceinline struct ebpt_node *__ebpt_lookup(struct eb_root *root, void *x) |
141 | 0 | { |
142 | 0 | if (sizeof(void *) == 4) |
143 | 0 | return (struct ebpt_node *)__eb32_lookup(root, (u32)(PTR_INT_TYPE)x); |
144 | 0 | else |
145 | 0 | return (struct ebpt_node *)__eb64_lookup(root, (u64)(PTR_INT_TYPE)x); |
146 | 0 | } Unexecuted instantiation: tools.c:__ebpt_lookup Unexecuted instantiation: cfgparse.c:__ebpt_lookup Unexecuted instantiation: connection.c:__ebpt_lookup Unexecuted instantiation: haproxy.c:__ebpt_lookup Unexecuted instantiation: http_ana.c:__ebpt_lookup Unexecuted instantiation: http_ext.c:__ebpt_lookup Unexecuted instantiation: http_htx.c:__ebpt_lookup Unexecuted instantiation: peers.c:__ebpt_lookup Unexecuted instantiation: proxy.c:__ebpt_lookup Unexecuted instantiation: server.c:__ebpt_lookup Unexecuted instantiation: sock.c:__ebpt_lookup Unexecuted instantiation: sock_inet.c:__ebpt_lookup Unexecuted instantiation: stats-html.c:__ebpt_lookup Unexecuted instantiation: stats.c:__ebpt_lookup Unexecuted instantiation: stream.c:__ebpt_lookup Unexecuted instantiation: tcpcheck.c:__ebpt_lookup Unexecuted instantiation: backend.c:__ebpt_lookup Unexecuted instantiation: cfgparse-listen.c:__ebpt_lookup Unexecuted instantiation: check.c:__ebpt_lookup Unexecuted instantiation: dict.c:__ebpt_lookup Unexecuted instantiation: ebimtree.c:__ebpt_lookup Unexecuted instantiation: ebistree.c:__ebpt_lookup Unexecuted instantiation: filters.c:__ebpt_lookup Unexecuted instantiation: flt_http_comp.c:__ebpt_lookup Unexecuted instantiation: haterm.c:__ebpt_lookup Unexecuted instantiation: http_fetch.c:__ebpt_lookup Unexecuted instantiation: pattern.c:__ebpt_lookup Unexecuted instantiation: proto_tcp.c:__ebpt_lookup Unexecuted instantiation: cache.c:__ebpt_lookup Unexecuted instantiation: fcgi-app.c:__ebpt_lookup Unexecuted instantiation: h1_htx.c:__ebpt_lookup |
147 | | |
148 | | static forceinline struct ebpt_node *__ebpt_insert(struct eb_root *root, struct ebpt_node *new) |
149 | 0 | { |
150 | 0 | if (sizeof(void *) == 4) |
151 | 0 | return (struct ebpt_node *)__eb32_insert(root, (struct eb32_node *)new); |
152 | 0 | else |
153 | 0 | return (struct ebpt_node *)__eb64_insert(root, (struct eb64_node *)new); |
154 | 0 | } Unexecuted instantiation: tools.c:__ebpt_insert Unexecuted instantiation: cfgparse.c:__ebpt_insert Unexecuted instantiation: connection.c:__ebpt_insert Unexecuted instantiation: haproxy.c:__ebpt_insert Unexecuted instantiation: http_ana.c:__ebpt_insert Unexecuted instantiation: http_ext.c:__ebpt_insert Unexecuted instantiation: http_htx.c:__ebpt_insert Unexecuted instantiation: peers.c:__ebpt_insert Unexecuted instantiation: proxy.c:__ebpt_insert Unexecuted instantiation: server.c:__ebpt_insert Unexecuted instantiation: sock.c:__ebpt_insert Unexecuted instantiation: sock_inet.c:__ebpt_insert Unexecuted instantiation: stats-html.c:__ebpt_insert Unexecuted instantiation: stats.c:__ebpt_insert Unexecuted instantiation: stream.c:__ebpt_insert Unexecuted instantiation: tcpcheck.c:__ebpt_insert Unexecuted instantiation: backend.c:__ebpt_insert Unexecuted instantiation: cfgparse-listen.c:__ebpt_insert Unexecuted instantiation: check.c:__ebpt_insert Unexecuted instantiation: dict.c:__ebpt_insert Unexecuted instantiation: ebimtree.c:__ebpt_insert Unexecuted instantiation: ebistree.c:__ebpt_insert Unexecuted instantiation: filters.c:__ebpt_insert Unexecuted instantiation: flt_http_comp.c:__ebpt_insert Unexecuted instantiation: haterm.c:__ebpt_insert Unexecuted instantiation: http_fetch.c:__ebpt_insert Unexecuted instantiation: pattern.c:__ebpt_insert Unexecuted instantiation: proto_tcp.c:__ebpt_insert Unexecuted instantiation: cache.c:__ebpt_insert Unexecuted instantiation: fcgi-app.c:__ebpt_insert Unexecuted instantiation: h1_htx.c:__ebpt_insert |
155 | | |
156 | | #endif /* _EBPT_TREE_H */ |