Coverage Report

Created: 2026-09-03 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/haproxy/include/import/eb32tree.h
Line
Count
Source
1
/*
2
 * Elastic Binary Trees - macros and structures for operations on 32bit 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 _EB32TREE_H
22
#define _EB32TREE_H
23
24
#include "ebtree.h"
25
26
27
/* Return the structure of type <type> whose member <member> points to <ptr> */
28
0
#define eb32_entry(ptr, type, member) container_of(ptr, type, member)
29
30
/*
31
 * Exported functions and macros.
32
 * Many of them are always inlined because they are extremely small, and
33
 * are generally called at most once or twice in a program.
34
 */
35
36
/* Return leftmost node in the tree, or NULL if none */
37
static inline struct eb32_node *eb32_first(struct eb_root *root)
38
0
{
39
0
  return eb32_entry(eb_first(root), struct eb32_node, node);
40
0
}
Unexecuted instantiation: http.c:eb32_first
Unexecuted instantiation: tools.c:eb32_first
Unexecuted instantiation: applet.c:eb32_first
Unexecuted instantiation: cfgparse.c:eb32_first
Unexecuted instantiation: channel.c:eb32_first
Unexecuted instantiation: chunk.c:eb32_first
Unexecuted instantiation: cli.c:eb32_first
Unexecuted instantiation: clock.c:eb32_first
Unexecuted instantiation: connection.c:eb32_first
Unexecuted instantiation: debug.c:eb32_first
Unexecuted instantiation: dgram.c:eb32_first
Unexecuted instantiation: dynbuf.c:eb32_first
Unexecuted instantiation: eb32tree.c:eb32_first
Unexecuted instantiation: errors.c:eb32_first
Unexecuted instantiation: fd.c:eb32_first
Unexecuted instantiation: freq_ctr.c:eb32_first
Unexecuted instantiation: frontend.c:eb32_first
Unexecuted instantiation: haproxy.c:eb32_first
Unexecuted instantiation: http_ana.c:eb32_first
Unexecuted instantiation: http_ext.c:eb32_first
Unexecuted instantiation: http_htx.c:eb32_first
Unexecuted instantiation: http_rules.c:eb32_first
Unexecuted instantiation: limits.c:eb32_first
Unexecuted instantiation: listener.c:eb32_first
Unexecuted instantiation: log.c:eb32_first
Unexecuted instantiation: mailers.c:eb32_first
Unexecuted instantiation: mworker.c:eb32_first
Unexecuted instantiation: peers.c:eb32_first
Unexecuted instantiation: pool.c:eb32_first
Unexecuted instantiation: proto_rhttp.c:eb32_first
Unexecuted instantiation: proto_sockpair.c:eb32_first
Unexecuted instantiation: protocol.c:eb32_first
Unexecuted instantiation: proxy.c:eb32_first
Unexecuted instantiation: queue.c:eb32_first
Unexecuted instantiation: regex.c:eb32_first
Unexecuted instantiation: resolvers.c:eb32_first
Unexecuted instantiation: ring.c:eb32_first
Unexecuted instantiation: sample.c:eb32_first
Unexecuted instantiation: server.c:eb32_first
Unexecuted instantiation: session.c:eb32_first
Unexecuted instantiation: signal.c:eb32_first
Unexecuted instantiation: sink.c:eb32_first
Unexecuted instantiation: sock.c:eb32_first
Unexecuted instantiation: sock_inet.c:eb32_first
Unexecuted instantiation: stats-html.c:eb32_first
Unexecuted instantiation: stats-proxy.c:eb32_first
Unexecuted instantiation: stats.c:eb32_first
Unexecuted instantiation: stconn.c:eb32_first
Unexecuted instantiation: stick_table.c:eb32_first
Unexecuted instantiation: stream.c:eb32_first
Unexecuted instantiation: systemd.c:eb32_first
Unexecuted instantiation: task.c:eb32_first
Unexecuted instantiation: tcp_rules.c:eb32_first
Unexecuted instantiation: tcpcheck.c:eb32_first
Unexecuted instantiation: thread.c:eb32_first
Unexecuted instantiation: trace.c:eb32_first
Unexecuted instantiation: vars.c:eb32_first
Unexecuted instantiation: acl.c:eb32_first
Unexecuted instantiation: action.c:eb32_first
Unexecuted instantiation: activity.c:eb32_first
Unexecuted instantiation: arg.c:eb32_first
Unexecuted instantiation: backend.c:eb32_first
Unexecuted instantiation: cfgcond.c:eb32_first
Unexecuted instantiation: cfgparse-global.c:eb32_first
Unexecuted instantiation: cfgparse-listen.c:eb32_first
Unexecuted instantiation: check.c:eb32_first
Unexecuted instantiation: compression.c:eb32_first
Unexecuted instantiation: counters.c:eb32_first
Unexecuted instantiation: dict.c:eb32_first
Unexecuted instantiation: dns.c:eb32_first
Unexecuted instantiation: dns_ring.c:eb32_first
Unexecuted instantiation: ebimtree.c:eb32_first
Unexecuted instantiation: ebistree.c:eb32_first
Unexecuted instantiation: event_hdl.c:eb32_first
Unexecuted instantiation: extcheck.c:eb32_first
Unexecuted instantiation: filters.c:eb32_first
Unexecuted instantiation: fix.c:eb32_first
Unexecuted instantiation: flt_decomp.c:eb32_first
Unexecuted instantiation: flt_http_comp.c:eb32_first
Unexecuted instantiation: guid.c:eb32_first
Unexecuted instantiation: h1.c:eb32_first
Unexecuted instantiation: haterm.c:eb32_first
Unexecuted instantiation: http_fetch.c:eb32_first
Unexecuted instantiation: lb_chash.c:eb32_first
Unexecuted instantiation: lb_fas.c:eb32_first
Unexecuted instantiation: lb_fwlc.c:eb32_first
Unexecuted instantiation: lb_fwrr.c:eb32_first
Unexecuted instantiation: lb_map.c:eb32_first
Unexecuted instantiation: mqtt.c:eb32_first
Unexecuted instantiation: mux_spop.c:eb32_first
Unexecuted instantiation: pattern.c:eb32_first
Unexecuted instantiation: payload.c:eb32_first
Unexecuted instantiation: proto_tcp.c:eb32_first
Unexecuted instantiation: stats-file.c:eb32_first
Unexecuted instantiation: stats-json.c:eb32_first
Unexecuted instantiation: cache.c:eb32_first
Unexecuted instantiation: fcgi-app.c:eb32_first
Unexecuted instantiation: flt_spoe.c:eb32_first
Unexecuted instantiation: h1_htx.c:eb32_first
Unexecuted instantiation: shctx.c:eb32_first
41
42
/* Return rightmost node in the tree, or NULL if none */
43
static inline struct eb32_node *eb32_last(struct eb_root *root)
44
0
{
45
0
  return eb32_entry(eb_last(root), struct eb32_node, node);
46
0
}
Unexecuted instantiation: http.c:eb32_last
Unexecuted instantiation: tools.c:eb32_last
Unexecuted instantiation: applet.c:eb32_last
Unexecuted instantiation: cfgparse.c:eb32_last
Unexecuted instantiation: channel.c:eb32_last
Unexecuted instantiation: chunk.c:eb32_last
Unexecuted instantiation: cli.c:eb32_last
Unexecuted instantiation: clock.c:eb32_last
Unexecuted instantiation: connection.c:eb32_last
Unexecuted instantiation: debug.c:eb32_last
Unexecuted instantiation: dgram.c:eb32_last
Unexecuted instantiation: dynbuf.c:eb32_last
Unexecuted instantiation: eb32tree.c:eb32_last
Unexecuted instantiation: errors.c:eb32_last
Unexecuted instantiation: fd.c:eb32_last
Unexecuted instantiation: freq_ctr.c:eb32_last
Unexecuted instantiation: frontend.c:eb32_last
Unexecuted instantiation: haproxy.c:eb32_last
Unexecuted instantiation: http_ana.c:eb32_last
Unexecuted instantiation: http_ext.c:eb32_last
Unexecuted instantiation: http_htx.c:eb32_last
Unexecuted instantiation: http_rules.c:eb32_last
Unexecuted instantiation: limits.c:eb32_last
Unexecuted instantiation: listener.c:eb32_last
Unexecuted instantiation: log.c:eb32_last
Unexecuted instantiation: mailers.c:eb32_last
Unexecuted instantiation: mworker.c:eb32_last
Unexecuted instantiation: peers.c:eb32_last
Unexecuted instantiation: pool.c:eb32_last
Unexecuted instantiation: proto_rhttp.c:eb32_last
Unexecuted instantiation: proto_sockpair.c:eb32_last
Unexecuted instantiation: protocol.c:eb32_last
Unexecuted instantiation: proxy.c:eb32_last
Unexecuted instantiation: queue.c:eb32_last
Unexecuted instantiation: regex.c:eb32_last
Unexecuted instantiation: resolvers.c:eb32_last
Unexecuted instantiation: ring.c:eb32_last
Unexecuted instantiation: sample.c:eb32_last
Unexecuted instantiation: server.c:eb32_last
Unexecuted instantiation: session.c:eb32_last
Unexecuted instantiation: signal.c:eb32_last
Unexecuted instantiation: sink.c:eb32_last
Unexecuted instantiation: sock.c:eb32_last
Unexecuted instantiation: sock_inet.c:eb32_last
Unexecuted instantiation: stats-html.c:eb32_last
Unexecuted instantiation: stats-proxy.c:eb32_last
Unexecuted instantiation: stats.c:eb32_last
Unexecuted instantiation: stconn.c:eb32_last
Unexecuted instantiation: stick_table.c:eb32_last
Unexecuted instantiation: stream.c:eb32_last
Unexecuted instantiation: systemd.c:eb32_last
Unexecuted instantiation: task.c:eb32_last
Unexecuted instantiation: tcp_rules.c:eb32_last
Unexecuted instantiation: tcpcheck.c:eb32_last
Unexecuted instantiation: thread.c:eb32_last
Unexecuted instantiation: trace.c:eb32_last
Unexecuted instantiation: vars.c:eb32_last
Unexecuted instantiation: acl.c:eb32_last
Unexecuted instantiation: action.c:eb32_last
Unexecuted instantiation: activity.c:eb32_last
Unexecuted instantiation: arg.c:eb32_last
Unexecuted instantiation: backend.c:eb32_last
Unexecuted instantiation: cfgcond.c:eb32_last
Unexecuted instantiation: cfgparse-global.c:eb32_last
Unexecuted instantiation: cfgparse-listen.c:eb32_last
Unexecuted instantiation: check.c:eb32_last
Unexecuted instantiation: compression.c:eb32_last
Unexecuted instantiation: counters.c:eb32_last
Unexecuted instantiation: dict.c:eb32_last
Unexecuted instantiation: dns.c:eb32_last
Unexecuted instantiation: dns_ring.c:eb32_last
Unexecuted instantiation: ebimtree.c:eb32_last
Unexecuted instantiation: ebistree.c:eb32_last
Unexecuted instantiation: event_hdl.c:eb32_last
Unexecuted instantiation: extcheck.c:eb32_last
Unexecuted instantiation: filters.c:eb32_last
Unexecuted instantiation: fix.c:eb32_last
Unexecuted instantiation: flt_decomp.c:eb32_last
Unexecuted instantiation: flt_http_comp.c:eb32_last
Unexecuted instantiation: guid.c:eb32_last
Unexecuted instantiation: h1.c:eb32_last
Unexecuted instantiation: haterm.c:eb32_last
Unexecuted instantiation: http_fetch.c:eb32_last
Unexecuted instantiation: lb_chash.c:eb32_last
Unexecuted instantiation: lb_fas.c:eb32_last
Unexecuted instantiation: lb_fwlc.c:eb32_last
Unexecuted instantiation: lb_fwrr.c:eb32_last
Unexecuted instantiation: lb_map.c:eb32_last
Unexecuted instantiation: mqtt.c:eb32_last
Unexecuted instantiation: mux_spop.c:eb32_last
Unexecuted instantiation: pattern.c:eb32_last
Unexecuted instantiation: payload.c:eb32_last
Unexecuted instantiation: proto_tcp.c:eb32_last
Unexecuted instantiation: stats-file.c:eb32_last
Unexecuted instantiation: stats-json.c:eb32_last
Unexecuted instantiation: cache.c:eb32_last
Unexecuted instantiation: fcgi-app.c:eb32_last
Unexecuted instantiation: flt_spoe.c:eb32_last
Unexecuted instantiation: h1_htx.c:eb32_last
Unexecuted instantiation: shctx.c:eb32_last
47
48
/* Return next node in the tree, or NULL if none */
49
static inline struct eb32_node *eb32_next(struct eb32_node *eb32)
50
0
{
51
0
  return eb32_entry(eb_next(&eb32->node), struct eb32_node, node);
52
0
}
Unexecuted instantiation: http.c:eb32_next
Unexecuted instantiation: tools.c:eb32_next
Unexecuted instantiation: applet.c:eb32_next
Unexecuted instantiation: cfgparse.c:eb32_next
Unexecuted instantiation: channel.c:eb32_next
Unexecuted instantiation: chunk.c:eb32_next
Unexecuted instantiation: cli.c:eb32_next
Unexecuted instantiation: clock.c:eb32_next
Unexecuted instantiation: connection.c:eb32_next
Unexecuted instantiation: debug.c:eb32_next
Unexecuted instantiation: dgram.c:eb32_next
Unexecuted instantiation: dynbuf.c:eb32_next
Unexecuted instantiation: eb32tree.c:eb32_next
Unexecuted instantiation: errors.c:eb32_next
Unexecuted instantiation: fd.c:eb32_next
Unexecuted instantiation: freq_ctr.c:eb32_next
Unexecuted instantiation: frontend.c:eb32_next
Unexecuted instantiation: haproxy.c:eb32_next
Unexecuted instantiation: http_ana.c:eb32_next
Unexecuted instantiation: http_ext.c:eb32_next
Unexecuted instantiation: http_htx.c:eb32_next
Unexecuted instantiation: http_rules.c:eb32_next
Unexecuted instantiation: limits.c:eb32_next
Unexecuted instantiation: listener.c:eb32_next
Unexecuted instantiation: log.c:eb32_next
Unexecuted instantiation: mailers.c:eb32_next
Unexecuted instantiation: mworker.c:eb32_next
Unexecuted instantiation: peers.c:eb32_next
Unexecuted instantiation: pool.c:eb32_next
Unexecuted instantiation: proto_rhttp.c:eb32_next
Unexecuted instantiation: proto_sockpair.c:eb32_next
Unexecuted instantiation: protocol.c:eb32_next
Unexecuted instantiation: proxy.c:eb32_next
Unexecuted instantiation: queue.c:eb32_next
Unexecuted instantiation: regex.c:eb32_next
Unexecuted instantiation: resolvers.c:eb32_next
Unexecuted instantiation: ring.c:eb32_next
Unexecuted instantiation: sample.c:eb32_next
Unexecuted instantiation: server.c:eb32_next
Unexecuted instantiation: session.c:eb32_next
Unexecuted instantiation: signal.c:eb32_next
Unexecuted instantiation: sink.c:eb32_next
Unexecuted instantiation: sock.c:eb32_next
Unexecuted instantiation: sock_inet.c:eb32_next
Unexecuted instantiation: stats-html.c:eb32_next
Unexecuted instantiation: stats-proxy.c:eb32_next
Unexecuted instantiation: stats.c:eb32_next
Unexecuted instantiation: stconn.c:eb32_next
Unexecuted instantiation: stick_table.c:eb32_next
Unexecuted instantiation: stream.c:eb32_next
Unexecuted instantiation: systemd.c:eb32_next
Unexecuted instantiation: task.c:eb32_next
Unexecuted instantiation: tcp_rules.c:eb32_next
Unexecuted instantiation: tcpcheck.c:eb32_next
Unexecuted instantiation: thread.c:eb32_next
Unexecuted instantiation: trace.c:eb32_next
Unexecuted instantiation: vars.c:eb32_next
Unexecuted instantiation: acl.c:eb32_next
Unexecuted instantiation: action.c:eb32_next
Unexecuted instantiation: activity.c:eb32_next
Unexecuted instantiation: arg.c:eb32_next
Unexecuted instantiation: backend.c:eb32_next
Unexecuted instantiation: cfgcond.c:eb32_next
Unexecuted instantiation: cfgparse-global.c:eb32_next
Unexecuted instantiation: cfgparse-listen.c:eb32_next
Unexecuted instantiation: check.c:eb32_next
Unexecuted instantiation: compression.c:eb32_next
Unexecuted instantiation: counters.c:eb32_next
Unexecuted instantiation: dict.c:eb32_next
Unexecuted instantiation: dns.c:eb32_next
Unexecuted instantiation: dns_ring.c:eb32_next
Unexecuted instantiation: ebimtree.c:eb32_next
Unexecuted instantiation: ebistree.c:eb32_next
Unexecuted instantiation: event_hdl.c:eb32_next
Unexecuted instantiation: extcheck.c:eb32_next
Unexecuted instantiation: filters.c:eb32_next
Unexecuted instantiation: fix.c:eb32_next
Unexecuted instantiation: flt_decomp.c:eb32_next
Unexecuted instantiation: flt_http_comp.c:eb32_next
Unexecuted instantiation: guid.c:eb32_next
Unexecuted instantiation: h1.c:eb32_next
Unexecuted instantiation: haterm.c:eb32_next
Unexecuted instantiation: http_fetch.c:eb32_next
Unexecuted instantiation: lb_chash.c:eb32_next
Unexecuted instantiation: lb_fas.c:eb32_next
Unexecuted instantiation: lb_fwlc.c:eb32_next
Unexecuted instantiation: lb_fwrr.c:eb32_next
Unexecuted instantiation: lb_map.c:eb32_next
Unexecuted instantiation: mqtt.c:eb32_next
Unexecuted instantiation: mux_spop.c:eb32_next
Unexecuted instantiation: pattern.c:eb32_next
Unexecuted instantiation: payload.c:eb32_next
Unexecuted instantiation: proto_tcp.c:eb32_next
Unexecuted instantiation: stats-file.c:eb32_next
Unexecuted instantiation: stats-json.c:eb32_next
Unexecuted instantiation: cache.c:eb32_next
Unexecuted instantiation: fcgi-app.c:eb32_next
Unexecuted instantiation: flt_spoe.c:eb32_next
Unexecuted instantiation: h1_htx.c:eb32_next
Unexecuted instantiation: shctx.c:eb32_next
53
54
/* Return previous node in the tree, or NULL if none */
55
static inline struct eb32_node *eb32_prev(struct eb32_node *eb32)
56
0
{
57
0
  return eb32_entry(eb_prev(&eb32->node), struct eb32_node, node);
58
0
}
Unexecuted instantiation: http.c:eb32_prev
Unexecuted instantiation: tools.c:eb32_prev
Unexecuted instantiation: applet.c:eb32_prev
Unexecuted instantiation: cfgparse.c:eb32_prev
Unexecuted instantiation: channel.c:eb32_prev
Unexecuted instantiation: chunk.c:eb32_prev
Unexecuted instantiation: cli.c:eb32_prev
Unexecuted instantiation: clock.c:eb32_prev
Unexecuted instantiation: connection.c:eb32_prev
Unexecuted instantiation: debug.c:eb32_prev
Unexecuted instantiation: dgram.c:eb32_prev
Unexecuted instantiation: dynbuf.c:eb32_prev
Unexecuted instantiation: eb32tree.c:eb32_prev
Unexecuted instantiation: errors.c:eb32_prev
Unexecuted instantiation: fd.c:eb32_prev
Unexecuted instantiation: freq_ctr.c:eb32_prev
Unexecuted instantiation: frontend.c:eb32_prev
Unexecuted instantiation: haproxy.c:eb32_prev
Unexecuted instantiation: http_ana.c:eb32_prev
Unexecuted instantiation: http_ext.c:eb32_prev
Unexecuted instantiation: http_htx.c:eb32_prev
Unexecuted instantiation: http_rules.c:eb32_prev
Unexecuted instantiation: limits.c:eb32_prev
Unexecuted instantiation: listener.c:eb32_prev
Unexecuted instantiation: log.c:eb32_prev
Unexecuted instantiation: mailers.c:eb32_prev
Unexecuted instantiation: mworker.c:eb32_prev
Unexecuted instantiation: peers.c:eb32_prev
Unexecuted instantiation: pool.c:eb32_prev
Unexecuted instantiation: proto_rhttp.c:eb32_prev
Unexecuted instantiation: proto_sockpair.c:eb32_prev
Unexecuted instantiation: protocol.c:eb32_prev
Unexecuted instantiation: proxy.c:eb32_prev
Unexecuted instantiation: queue.c:eb32_prev
Unexecuted instantiation: regex.c:eb32_prev
Unexecuted instantiation: resolvers.c:eb32_prev
Unexecuted instantiation: ring.c:eb32_prev
Unexecuted instantiation: sample.c:eb32_prev
Unexecuted instantiation: server.c:eb32_prev
Unexecuted instantiation: session.c:eb32_prev
Unexecuted instantiation: signal.c:eb32_prev
Unexecuted instantiation: sink.c:eb32_prev
Unexecuted instantiation: sock.c:eb32_prev
Unexecuted instantiation: sock_inet.c:eb32_prev
Unexecuted instantiation: stats-html.c:eb32_prev
Unexecuted instantiation: stats-proxy.c:eb32_prev
Unexecuted instantiation: stats.c:eb32_prev
Unexecuted instantiation: stconn.c:eb32_prev
Unexecuted instantiation: stick_table.c:eb32_prev
Unexecuted instantiation: stream.c:eb32_prev
Unexecuted instantiation: systemd.c:eb32_prev
Unexecuted instantiation: task.c:eb32_prev
Unexecuted instantiation: tcp_rules.c:eb32_prev
Unexecuted instantiation: tcpcheck.c:eb32_prev
Unexecuted instantiation: thread.c:eb32_prev
Unexecuted instantiation: trace.c:eb32_prev
Unexecuted instantiation: vars.c:eb32_prev
Unexecuted instantiation: acl.c:eb32_prev
Unexecuted instantiation: action.c:eb32_prev
Unexecuted instantiation: activity.c:eb32_prev
Unexecuted instantiation: arg.c:eb32_prev
Unexecuted instantiation: backend.c:eb32_prev
Unexecuted instantiation: cfgcond.c:eb32_prev
Unexecuted instantiation: cfgparse-global.c:eb32_prev
Unexecuted instantiation: cfgparse-listen.c:eb32_prev
Unexecuted instantiation: check.c:eb32_prev
Unexecuted instantiation: compression.c:eb32_prev
Unexecuted instantiation: counters.c:eb32_prev
Unexecuted instantiation: dict.c:eb32_prev
Unexecuted instantiation: dns.c:eb32_prev
Unexecuted instantiation: dns_ring.c:eb32_prev
Unexecuted instantiation: ebimtree.c:eb32_prev
Unexecuted instantiation: ebistree.c:eb32_prev
Unexecuted instantiation: event_hdl.c:eb32_prev
Unexecuted instantiation: extcheck.c:eb32_prev
Unexecuted instantiation: filters.c:eb32_prev
Unexecuted instantiation: fix.c:eb32_prev
Unexecuted instantiation: flt_decomp.c:eb32_prev
Unexecuted instantiation: flt_http_comp.c:eb32_prev
Unexecuted instantiation: guid.c:eb32_prev
Unexecuted instantiation: h1.c:eb32_prev
Unexecuted instantiation: haterm.c:eb32_prev
Unexecuted instantiation: http_fetch.c:eb32_prev
Unexecuted instantiation: lb_chash.c:eb32_prev
Unexecuted instantiation: lb_fas.c:eb32_prev
Unexecuted instantiation: lb_fwlc.c:eb32_prev
Unexecuted instantiation: lb_fwrr.c:eb32_prev
Unexecuted instantiation: lb_map.c:eb32_prev
Unexecuted instantiation: mqtt.c:eb32_prev
Unexecuted instantiation: mux_spop.c:eb32_prev
Unexecuted instantiation: pattern.c:eb32_prev
Unexecuted instantiation: payload.c:eb32_prev
Unexecuted instantiation: proto_tcp.c:eb32_prev
Unexecuted instantiation: stats-file.c:eb32_prev
Unexecuted instantiation: stats-json.c:eb32_prev
Unexecuted instantiation: cache.c:eb32_prev
Unexecuted instantiation: fcgi-app.c:eb32_prev
Unexecuted instantiation: flt_spoe.c:eb32_prev
Unexecuted instantiation: h1_htx.c:eb32_prev
Unexecuted instantiation: shctx.c:eb32_prev
59
60
/* Return next leaf node within a duplicate sub-tree, or NULL if none. */
61
static inline struct eb32_node *eb32_next_dup(struct eb32_node *eb32)
62
0
{
63
0
  return eb32_entry(eb_next_dup(&eb32->node), struct eb32_node, node);
64
0
}
Unexecuted instantiation: http.c:eb32_next_dup
Unexecuted instantiation: tools.c:eb32_next_dup
Unexecuted instantiation: applet.c:eb32_next_dup
Unexecuted instantiation: cfgparse.c:eb32_next_dup
Unexecuted instantiation: channel.c:eb32_next_dup
Unexecuted instantiation: chunk.c:eb32_next_dup
Unexecuted instantiation: cli.c:eb32_next_dup
Unexecuted instantiation: clock.c:eb32_next_dup
Unexecuted instantiation: connection.c:eb32_next_dup
Unexecuted instantiation: debug.c:eb32_next_dup
Unexecuted instantiation: dgram.c:eb32_next_dup
Unexecuted instantiation: dynbuf.c:eb32_next_dup
Unexecuted instantiation: eb32tree.c:eb32_next_dup
Unexecuted instantiation: errors.c:eb32_next_dup
Unexecuted instantiation: fd.c:eb32_next_dup
Unexecuted instantiation: freq_ctr.c:eb32_next_dup
Unexecuted instantiation: frontend.c:eb32_next_dup
Unexecuted instantiation: haproxy.c:eb32_next_dup
Unexecuted instantiation: http_ana.c:eb32_next_dup
Unexecuted instantiation: http_ext.c:eb32_next_dup
Unexecuted instantiation: http_htx.c:eb32_next_dup
Unexecuted instantiation: http_rules.c:eb32_next_dup
Unexecuted instantiation: limits.c:eb32_next_dup
Unexecuted instantiation: listener.c:eb32_next_dup
Unexecuted instantiation: log.c:eb32_next_dup
Unexecuted instantiation: mailers.c:eb32_next_dup
Unexecuted instantiation: mworker.c:eb32_next_dup
Unexecuted instantiation: peers.c:eb32_next_dup
Unexecuted instantiation: pool.c:eb32_next_dup
Unexecuted instantiation: proto_rhttp.c:eb32_next_dup
Unexecuted instantiation: proto_sockpair.c:eb32_next_dup
Unexecuted instantiation: protocol.c:eb32_next_dup
Unexecuted instantiation: proxy.c:eb32_next_dup
Unexecuted instantiation: queue.c:eb32_next_dup
Unexecuted instantiation: regex.c:eb32_next_dup
Unexecuted instantiation: resolvers.c:eb32_next_dup
Unexecuted instantiation: ring.c:eb32_next_dup
Unexecuted instantiation: sample.c:eb32_next_dup
Unexecuted instantiation: server.c:eb32_next_dup
Unexecuted instantiation: session.c:eb32_next_dup
Unexecuted instantiation: signal.c:eb32_next_dup
Unexecuted instantiation: sink.c:eb32_next_dup
Unexecuted instantiation: sock.c:eb32_next_dup
Unexecuted instantiation: sock_inet.c:eb32_next_dup
Unexecuted instantiation: stats-html.c:eb32_next_dup
Unexecuted instantiation: stats-proxy.c:eb32_next_dup
Unexecuted instantiation: stats.c:eb32_next_dup
Unexecuted instantiation: stconn.c:eb32_next_dup
Unexecuted instantiation: stick_table.c:eb32_next_dup
Unexecuted instantiation: stream.c:eb32_next_dup
Unexecuted instantiation: systemd.c:eb32_next_dup
Unexecuted instantiation: task.c:eb32_next_dup
Unexecuted instantiation: tcp_rules.c:eb32_next_dup
Unexecuted instantiation: tcpcheck.c:eb32_next_dup
Unexecuted instantiation: thread.c:eb32_next_dup
Unexecuted instantiation: trace.c:eb32_next_dup
Unexecuted instantiation: vars.c:eb32_next_dup
Unexecuted instantiation: acl.c:eb32_next_dup
Unexecuted instantiation: action.c:eb32_next_dup
Unexecuted instantiation: activity.c:eb32_next_dup
Unexecuted instantiation: arg.c:eb32_next_dup
Unexecuted instantiation: backend.c:eb32_next_dup
Unexecuted instantiation: cfgcond.c:eb32_next_dup
Unexecuted instantiation: cfgparse-global.c:eb32_next_dup
Unexecuted instantiation: cfgparse-listen.c:eb32_next_dup
Unexecuted instantiation: check.c:eb32_next_dup
Unexecuted instantiation: compression.c:eb32_next_dup
Unexecuted instantiation: counters.c:eb32_next_dup
Unexecuted instantiation: dict.c:eb32_next_dup
Unexecuted instantiation: dns.c:eb32_next_dup
Unexecuted instantiation: dns_ring.c:eb32_next_dup
Unexecuted instantiation: ebimtree.c:eb32_next_dup
Unexecuted instantiation: ebistree.c:eb32_next_dup
Unexecuted instantiation: event_hdl.c:eb32_next_dup
Unexecuted instantiation: extcheck.c:eb32_next_dup
Unexecuted instantiation: filters.c:eb32_next_dup
Unexecuted instantiation: fix.c:eb32_next_dup
Unexecuted instantiation: flt_decomp.c:eb32_next_dup
Unexecuted instantiation: flt_http_comp.c:eb32_next_dup
Unexecuted instantiation: guid.c:eb32_next_dup
Unexecuted instantiation: h1.c:eb32_next_dup
Unexecuted instantiation: haterm.c:eb32_next_dup
Unexecuted instantiation: http_fetch.c:eb32_next_dup
Unexecuted instantiation: lb_chash.c:eb32_next_dup
Unexecuted instantiation: lb_fas.c:eb32_next_dup
Unexecuted instantiation: lb_fwlc.c:eb32_next_dup
Unexecuted instantiation: lb_fwrr.c:eb32_next_dup
Unexecuted instantiation: lb_map.c:eb32_next_dup
Unexecuted instantiation: mqtt.c:eb32_next_dup
Unexecuted instantiation: mux_spop.c:eb32_next_dup
Unexecuted instantiation: pattern.c:eb32_next_dup
Unexecuted instantiation: payload.c:eb32_next_dup
Unexecuted instantiation: proto_tcp.c:eb32_next_dup
Unexecuted instantiation: stats-file.c:eb32_next_dup
Unexecuted instantiation: stats-json.c:eb32_next_dup
Unexecuted instantiation: cache.c:eb32_next_dup
Unexecuted instantiation: fcgi-app.c:eb32_next_dup
Unexecuted instantiation: flt_spoe.c:eb32_next_dup
Unexecuted instantiation: h1_htx.c:eb32_next_dup
Unexecuted instantiation: shctx.c:eb32_next_dup
65
66
/* Return previous leaf node within a duplicate sub-tree, or NULL if none. */
67
static inline struct eb32_node *eb32_prev_dup(struct eb32_node *eb32)
68
0
{
69
0
  return eb32_entry(eb_prev_dup(&eb32->node), struct eb32_node, node);
70
0
}
Unexecuted instantiation: http.c:eb32_prev_dup
Unexecuted instantiation: tools.c:eb32_prev_dup
Unexecuted instantiation: applet.c:eb32_prev_dup
Unexecuted instantiation: cfgparse.c:eb32_prev_dup
Unexecuted instantiation: channel.c:eb32_prev_dup
Unexecuted instantiation: chunk.c:eb32_prev_dup
Unexecuted instantiation: cli.c:eb32_prev_dup
Unexecuted instantiation: clock.c:eb32_prev_dup
Unexecuted instantiation: connection.c:eb32_prev_dup
Unexecuted instantiation: debug.c:eb32_prev_dup
Unexecuted instantiation: dgram.c:eb32_prev_dup
Unexecuted instantiation: dynbuf.c:eb32_prev_dup
Unexecuted instantiation: eb32tree.c:eb32_prev_dup
Unexecuted instantiation: errors.c:eb32_prev_dup
Unexecuted instantiation: fd.c:eb32_prev_dup
Unexecuted instantiation: freq_ctr.c:eb32_prev_dup
Unexecuted instantiation: frontend.c:eb32_prev_dup
Unexecuted instantiation: haproxy.c:eb32_prev_dup
Unexecuted instantiation: http_ana.c:eb32_prev_dup
Unexecuted instantiation: http_ext.c:eb32_prev_dup
Unexecuted instantiation: http_htx.c:eb32_prev_dup
Unexecuted instantiation: http_rules.c:eb32_prev_dup
Unexecuted instantiation: limits.c:eb32_prev_dup
Unexecuted instantiation: listener.c:eb32_prev_dup
Unexecuted instantiation: log.c:eb32_prev_dup
Unexecuted instantiation: mailers.c:eb32_prev_dup
Unexecuted instantiation: mworker.c:eb32_prev_dup
Unexecuted instantiation: peers.c:eb32_prev_dup
Unexecuted instantiation: pool.c:eb32_prev_dup
Unexecuted instantiation: proto_rhttp.c:eb32_prev_dup
Unexecuted instantiation: proto_sockpair.c:eb32_prev_dup
Unexecuted instantiation: protocol.c:eb32_prev_dup
Unexecuted instantiation: proxy.c:eb32_prev_dup
Unexecuted instantiation: queue.c:eb32_prev_dup
Unexecuted instantiation: regex.c:eb32_prev_dup
Unexecuted instantiation: resolvers.c:eb32_prev_dup
Unexecuted instantiation: ring.c:eb32_prev_dup
Unexecuted instantiation: sample.c:eb32_prev_dup
Unexecuted instantiation: server.c:eb32_prev_dup
Unexecuted instantiation: session.c:eb32_prev_dup
Unexecuted instantiation: signal.c:eb32_prev_dup
Unexecuted instantiation: sink.c:eb32_prev_dup
Unexecuted instantiation: sock.c:eb32_prev_dup
Unexecuted instantiation: sock_inet.c:eb32_prev_dup
Unexecuted instantiation: stats-html.c:eb32_prev_dup
Unexecuted instantiation: stats-proxy.c:eb32_prev_dup
Unexecuted instantiation: stats.c:eb32_prev_dup
Unexecuted instantiation: stconn.c:eb32_prev_dup
Unexecuted instantiation: stick_table.c:eb32_prev_dup
Unexecuted instantiation: stream.c:eb32_prev_dup
Unexecuted instantiation: systemd.c:eb32_prev_dup
Unexecuted instantiation: task.c:eb32_prev_dup
Unexecuted instantiation: tcp_rules.c:eb32_prev_dup
Unexecuted instantiation: tcpcheck.c:eb32_prev_dup
Unexecuted instantiation: thread.c:eb32_prev_dup
Unexecuted instantiation: trace.c:eb32_prev_dup
Unexecuted instantiation: vars.c:eb32_prev_dup
Unexecuted instantiation: acl.c:eb32_prev_dup
Unexecuted instantiation: action.c:eb32_prev_dup
Unexecuted instantiation: activity.c:eb32_prev_dup
Unexecuted instantiation: arg.c:eb32_prev_dup
Unexecuted instantiation: backend.c:eb32_prev_dup
Unexecuted instantiation: cfgcond.c:eb32_prev_dup
Unexecuted instantiation: cfgparse-global.c:eb32_prev_dup
Unexecuted instantiation: cfgparse-listen.c:eb32_prev_dup
Unexecuted instantiation: check.c:eb32_prev_dup
Unexecuted instantiation: compression.c:eb32_prev_dup
Unexecuted instantiation: counters.c:eb32_prev_dup
Unexecuted instantiation: dict.c:eb32_prev_dup
Unexecuted instantiation: dns.c:eb32_prev_dup
Unexecuted instantiation: dns_ring.c:eb32_prev_dup
Unexecuted instantiation: ebimtree.c:eb32_prev_dup
Unexecuted instantiation: ebistree.c:eb32_prev_dup
Unexecuted instantiation: event_hdl.c:eb32_prev_dup
Unexecuted instantiation: extcheck.c:eb32_prev_dup
Unexecuted instantiation: filters.c:eb32_prev_dup
Unexecuted instantiation: fix.c:eb32_prev_dup
Unexecuted instantiation: flt_decomp.c:eb32_prev_dup
Unexecuted instantiation: flt_http_comp.c:eb32_prev_dup
Unexecuted instantiation: guid.c:eb32_prev_dup
Unexecuted instantiation: h1.c:eb32_prev_dup
Unexecuted instantiation: haterm.c:eb32_prev_dup
Unexecuted instantiation: http_fetch.c:eb32_prev_dup
Unexecuted instantiation: lb_chash.c:eb32_prev_dup
Unexecuted instantiation: lb_fas.c:eb32_prev_dup
Unexecuted instantiation: lb_fwlc.c:eb32_prev_dup
Unexecuted instantiation: lb_fwrr.c:eb32_prev_dup
Unexecuted instantiation: lb_map.c:eb32_prev_dup
Unexecuted instantiation: mqtt.c:eb32_prev_dup
Unexecuted instantiation: mux_spop.c:eb32_prev_dup
Unexecuted instantiation: pattern.c:eb32_prev_dup
Unexecuted instantiation: payload.c:eb32_prev_dup
Unexecuted instantiation: proto_tcp.c:eb32_prev_dup
Unexecuted instantiation: stats-file.c:eb32_prev_dup
Unexecuted instantiation: stats-json.c:eb32_prev_dup
Unexecuted instantiation: cache.c:eb32_prev_dup
Unexecuted instantiation: fcgi-app.c:eb32_prev_dup
Unexecuted instantiation: flt_spoe.c:eb32_prev_dup
Unexecuted instantiation: h1_htx.c:eb32_prev_dup
Unexecuted instantiation: shctx.c:eb32_prev_dup
71
72
/* Return next node in the tree, skipping duplicates, or NULL if none */
73
static inline struct eb32_node *eb32_next_unique(struct eb32_node *eb32)
74
0
{
75
0
  return eb32_entry(eb_next_unique(&eb32->node), struct eb32_node, node);
76
0
}
Unexecuted instantiation: http.c:eb32_next_unique
Unexecuted instantiation: tools.c:eb32_next_unique
Unexecuted instantiation: applet.c:eb32_next_unique
Unexecuted instantiation: cfgparse.c:eb32_next_unique
Unexecuted instantiation: channel.c:eb32_next_unique
Unexecuted instantiation: chunk.c:eb32_next_unique
Unexecuted instantiation: cli.c:eb32_next_unique
Unexecuted instantiation: clock.c:eb32_next_unique
Unexecuted instantiation: connection.c:eb32_next_unique
Unexecuted instantiation: debug.c:eb32_next_unique
Unexecuted instantiation: dgram.c:eb32_next_unique
Unexecuted instantiation: dynbuf.c:eb32_next_unique
Unexecuted instantiation: eb32tree.c:eb32_next_unique
Unexecuted instantiation: errors.c:eb32_next_unique
Unexecuted instantiation: fd.c:eb32_next_unique
Unexecuted instantiation: freq_ctr.c:eb32_next_unique
Unexecuted instantiation: frontend.c:eb32_next_unique
Unexecuted instantiation: haproxy.c:eb32_next_unique
Unexecuted instantiation: http_ana.c:eb32_next_unique
Unexecuted instantiation: http_ext.c:eb32_next_unique
Unexecuted instantiation: http_htx.c:eb32_next_unique
Unexecuted instantiation: http_rules.c:eb32_next_unique
Unexecuted instantiation: limits.c:eb32_next_unique
Unexecuted instantiation: listener.c:eb32_next_unique
Unexecuted instantiation: log.c:eb32_next_unique
Unexecuted instantiation: mailers.c:eb32_next_unique
Unexecuted instantiation: mworker.c:eb32_next_unique
Unexecuted instantiation: peers.c:eb32_next_unique
Unexecuted instantiation: pool.c:eb32_next_unique
Unexecuted instantiation: proto_rhttp.c:eb32_next_unique
Unexecuted instantiation: proto_sockpair.c:eb32_next_unique
Unexecuted instantiation: protocol.c:eb32_next_unique
Unexecuted instantiation: proxy.c:eb32_next_unique
Unexecuted instantiation: queue.c:eb32_next_unique
Unexecuted instantiation: regex.c:eb32_next_unique
Unexecuted instantiation: resolvers.c:eb32_next_unique
Unexecuted instantiation: ring.c:eb32_next_unique
Unexecuted instantiation: sample.c:eb32_next_unique
Unexecuted instantiation: server.c:eb32_next_unique
Unexecuted instantiation: session.c:eb32_next_unique
Unexecuted instantiation: signal.c:eb32_next_unique
Unexecuted instantiation: sink.c:eb32_next_unique
Unexecuted instantiation: sock.c:eb32_next_unique
Unexecuted instantiation: sock_inet.c:eb32_next_unique
Unexecuted instantiation: stats-html.c:eb32_next_unique
Unexecuted instantiation: stats-proxy.c:eb32_next_unique
Unexecuted instantiation: stats.c:eb32_next_unique
Unexecuted instantiation: stconn.c:eb32_next_unique
Unexecuted instantiation: stick_table.c:eb32_next_unique
Unexecuted instantiation: stream.c:eb32_next_unique
Unexecuted instantiation: systemd.c:eb32_next_unique
Unexecuted instantiation: task.c:eb32_next_unique
Unexecuted instantiation: tcp_rules.c:eb32_next_unique
Unexecuted instantiation: tcpcheck.c:eb32_next_unique
Unexecuted instantiation: thread.c:eb32_next_unique
Unexecuted instantiation: trace.c:eb32_next_unique
Unexecuted instantiation: vars.c:eb32_next_unique
Unexecuted instantiation: acl.c:eb32_next_unique
Unexecuted instantiation: action.c:eb32_next_unique
Unexecuted instantiation: activity.c:eb32_next_unique
Unexecuted instantiation: arg.c:eb32_next_unique
Unexecuted instantiation: backend.c:eb32_next_unique
Unexecuted instantiation: cfgcond.c:eb32_next_unique
Unexecuted instantiation: cfgparse-global.c:eb32_next_unique
Unexecuted instantiation: cfgparse-listen.c:eb32_next_unique
Unexecuted instantiation: check.c:eb32_next_unique
Unexecuted instantiation: compression.c:eb32_next_unique
Unexecuted instantiation: counters.c:eb32_next_unique
Unexecuted instantiation: dict.c:eb32_next_unique
Unexecuted instantiation: dns.c:eb32_next_unique
Unexecuted instantiation: dns_ring.c:eb32_next_unique
Unexecuted instantiation: ebimtree.c:eb32_next_unique
Unexecuted instantiation: ebistree.c:eb32_next_unique
Unexecuted instantiation: event_hdl.c:eb32_next_unique
Unexecuted instantiation: extcheck.c:eb32_next_unique
Unexecuted instantiation: filters.c:eb32_next_unique
Unexecuted instantiation: fix.c:eb32_next_unique
Unexecuted instantiation: flt_decomp.c:eb32_next_unique
Unexecuted instantiation: flt_http_comp.c:eb32_next_unique
Unexecuted instantiation: guid.c:eb32_next_unique
Unexecuted instantiation: h1.c:eb32_next_unique
Unexecuted instantiation: haterm.c:eb32_next_unique
Unexecuted instantiation: http_fetch.c:eb32_next_unique
Unexecuted instantiation: lb_chash.c:eb32_next_unique
Unexecuted instantiation: lb_fas.c:eb32_next_unique
Unexecuted instantiation: lb_fwlc.c:eb32_next_unique
Unexecuted instantiation: lb_fwrr.c:eb32_next_unique
Unexecuted instantiation: lb_map.c:eb32_next_unique
Unexecuted instantiation: mqtt.c:eb32_next_unique
Unexecuted instantiation: mux_spop.c:eb32_next_unique
Unexecuted instantiation: pattern.c:eb32_next_unique
Unexecuted instantiation: payload.c:eb32_next_unique
Unexecuted instantiation: proto_tcp.c:eb32_next_unique
Unexecuted instantiation: stats-file.c:eb32_next_unique
Unexecuted instantiation: stats-json.c:eb32_next_unique
Unexecuted instantiation: cache.c:eb32_next_unique
Unexecuted instantiation: fcgi-app.c:eb32_next_unique
Unexecuted instantiation: flt_spoe.c:eb32_next_unique
Unexecuted instantiation: h1_htx.c:eb32_next_unique
Unexecuted instantiation: shctx.c:eb32_next_unique
77
78
/* Return previous node in the tree, skipping duplicates, or NULL if none */
79
static inline struct eb32_node *eb32_prev_unique(struct eb32_node *eb32)
80
0
{
81
0
  return eb32_entry(eb_prev_unique(&eb32->node), struct eb32_node, node);
82
0
}
Unexecuted instantiation: http.c:eb32_prev_unique
Unexecuted instantiation: tools.c:eb32_prev_unique
Unexecuted instantiation: applet.c:eb32_prev_unique
Unexecuted instantiation: cfgparse.c:eb32_prev_unique
Unexecuted instantiation: channel.c:eb32_prev_unique
Unexecuted instantiation: chunk.c:eb32_prev_unique
Unexecuted instantiation: cli.c:eb32_prev_unique
Unexecuted instantiation: clock.c:eb32_prev_unique
Unexecuted instantiation: connection.c:eb32_prev_unique
Unexecuted instantiation: debug.c:eb32_prev_unique
Unexecuted instantiation: dgram.c:eb32_prev_unique
Unexecuted instantiation: dynbuf.c:eb32_prev_unique
Unexecuted instantiation: eb32tree.c:eb32_prev_unique
Unexecuted instantiation: errors.c:eb32_prev_unique
Unexecuted instantiation: fd.c:eb32_prev_unique
Unexecuted instantiation: freq_ctr.c:eb32_prev_unique
Unexecuted instantiation: frontend.c:eb32_prev_unique
Unexecuted instantiation: haproxy.c:eb32_prev_unique
Unexecuted instantiation: http_ana.c:eb32_prev_unique
Unexecuted instantiation: http_ext.c:eb32_prev_unique
Unexecuted instantiation: http_htx.c:eb32_prev_unique
Unexecuted instantiation: http_rules.c:eb32_prev_unique
Unexecuted instantiation: limits.c:eb32_prev_unique
Unexecuted instantiation: listener.c:eb32_prev_unique
Unexecuted instantiation: log.c:eb32_prev_unique
Unexecuted instantiation: mailers.c:eb32_prev_unique
Unexecuted instantiation: mworker.c:eb32_prev_unique
Unexecuted instantiation: peers.c:eb32_prev_unique
Unexecuted instantiation: pool.c:eb32_prev_unique
Unexecuted instantiation: proto_rhttp.c:eb32_prev_unique
Unexecuted instantiation: proto_sockpair.c:eb32_prev_unique
Unexecuted instantiation: protocol.c:eb32_prev_unique
Unexecuted instantiation: proxy.c:eb32_prev_unique
Unexecuted instantiation: queue.c:eb32_prev_unique
Unexecuted instantiation: regex.c:eb32_prev_unique
Unexecuted instantiation: resolvers.c:eb32_prev_unique
Unexecuted instantiation: ring.c:eb32_prev_unique
Unexecuted instantiation: sample.c:eb32_prev_unique
Unexecuted instantiation: server.c:eb32_prev_unique
Unexecuted instantiation: session.c:eb32_prev_unique
Unexecuted instantiation: signal.c:eb32_prev_unique
Unexecuted instantiation: sink.c:eb32_prev_unique
Unexecuted instantiation: sock.c:eb32_prev_unique
Unexecuted instantiation: sock_inet.c:eb32_prev_unique
Unexecuted instantiation: stats-html.c:eb32_prev_unique
Unexecuted instantiation: stats-proxy.c:eb32_prev_unique
Unexecuted instantiation: stats.c:eb32_prev_unique
Unexecuted instantiation: stconn.c:eb32_prev_unique
Unexecuted instantiation: stick_table.c:eb32_prev_unique
Unexecuted instantiation: stream.c:eb32_prev_unique
Unexecuted instantiation: systemd.c:eb32_prev_unique
Unexecuted instantiation: task.c:eb32_prev_unique
Unexecuted instantiation: tcp_rules.c:eb32_prev_unique
Unexecuted instantiation: tcpcheck.c:eb32_prev_unique
Unexecuted instantiation: thread.c:eb32_prev_unique
Unexecuted instantiation: trace.c:eb32_prev_unique
Unexecuted instantiation: vars.c:eb32_prev_unique
Unexecuted instantiation: acl.c:eb32_prev_unique
Unexecuted instantiation: action.c:eb32_prev_unique
Unexecuted instantiation: activity.c:eb32_prev_unique
Unexecuted instantiation: arg.c:eb32_prev_unique
Unexecuted instantiation: backend.c:eb32_prev_unique
Unexecuted instantiation: cfgcond.c:eb32_prev_unique
Unexecuted instantiation: cfgparse-global.c:eb32_prev_unique
Unexecuted instantiation: cfgparse-listen.c:eb32_prev_unique
Unexecuted instantiation: check.c:eb32_prev_unique
Unexecuted instantiation: compression.c:eb32_prev_unique
Unexecuted instantiation: counters.c:eb32_prev_unique
Unexecuted instantiation: dict.c:eb32_prev_unique
Unexecuted instantiation: dns.c:eb32_prev_unique
Unexecuted instantiation: dns_ring.c:eb32_prev_unique
Unexecuted instantiation: ebimtree.c:eb32_prev_unique
Unexecuted instantiation: ebistree.c:eb32_prev_unique
Unexecuted instantiation: event_hdl.c:eb32_prev_unique
Unexecuted instantiation: extcheck.c:eb32_prev_unique
Unexecuted instantiation: filters.c:eb32_prev_unique
Unexecuted instantiation: fix.c:eb32_prev_unique
Unexecuted instantiation: flt_decomp.c:eb32_prev_unique
Unexecuted instantiation: flt_http_comp.c:eb32_prev_unique
Unexecuted instantiation: guid.c:eb32_prev_unique
Unexecuted instantiation: h1.c:eb32_prev_unique
Unexecuted instantiation: haterm.c:eb32_prev_unique
Unexecuted instantiation: http_fetch.c:eb32_prev_unique
Unexecuted instantiation: lb_chash.c:eb32_prev_unique
Unexecuted instantiation: lb_fas.c:eb32_prev_unique
Unexecuted instantiation: lb_fwlc.c:eb32_prev_unique
Unexecuted instantiation: lb_fwrr.c:eb32_prev_unique
Unexecuted instantiation: lb_map.c:eb32_prev_unique
Unexecuted instantiation: mqtt.c:eb32_prev_unique
Unexecuted instantiation: mux_spop.c:eb32_prev_unique
Unexecuted instantiation: pattern.c:eb32_prev_unique
Unexecuted instantiation: payload.c:eb32_prev_unique
Unexecuted instantiation: proto_tcp.c:eb32_prev_unique
Unexecuted instantiation: stats-file.c:eb32_prev_unique
Unexecuted instantiation: stats-json.c:eb32_prev_unique
Unexecuted instantiation: cache.c:eb32_prev_unique
Unexecuted instantiation: fcgi-app.c:eb32_prev_unique
Unexecuted instantiation: flt_spoe.c:eb32_prev_unique
Unexecuted instantiation: h1_htx.c:eb32_prev_unique
Unexecuted instantiation: shctx.c:eb32_prev_unique
83
84
/* Delete node from the tree if it was linked in. Mark the node unused. Note
85
 * that this function relies on a non-inlined generic function: eb_delete.
86
 */
87
static inline void eb32_delete(struct eb32_node *eb32)
88
0
{
89
0
  eb_delete(&eb32->node);
90
0
}
Unexecuted instantiation: http.c:eb32_delete
Unexecuted instantiation: tools.c:eb32_delete
Unexecuted instantiation: applet.c:eb32_delete
Unexecuted instantiation: cfgparse.c:eb32_delete
Unexecuted instantiation: channel.c:eb32_delete
Unexecuted instantiation: chunk.c:eb32_delete
Unexecuted instantiation: cli.c:eb32_delete
Unexecuted instantiation: clock.c:eb32_delete
Unexecuted instantiation: connection.c:eb32_delete
Unexecuted instantiation: debug.c:eb32_delete
Unexecuted instantiation: dgram.c:eb32_delete
Unexecuted instantiation: dynbuf.c:eb32_delete
Unexecuted instantiation: eb32tree.c:eb32_delete
Unexecuted instantiation: errors.c:eb32_delete
Unexecuted instantiation: fd.c:eb32_delete
Unexecuted instantiation: freq_ctr.c:eb32_delete
Unexecuted instantiation: frontend.c:eb32_delete
Unexecuted instantiation: haproxy.c:eb32_delete
Unexecuted instantiation: http_ana.c:eb32_delete
Unexecuted instantiation: http_ext.c:eb32_delete
Unexecuted instantiation: http_htx.c:eb32_delete
Unexecuted instantiation: http_rules.c:eb32_delete
Unexecuted instantiation: limits.c:eb32_delete
Unexecuted instantiation: listener.c:eb32_delete
Unexecuted instantiation: log.c:eb32_delete
Unexecuted instantiation: mailers.c:eb32_delete
Unexecuted instantiation: mworker.c:eb32_delete
Unexecuted instantiation: peers.c:eb32_delete
Unexecuted instantiation: pool.c:eb32_delete
Unexecuted instantiation: proto_rhttp.c:eb32_delete
Unexecuted instantiation: proto_sockpair.c:eb32_delete
Unexecuted instantiation: protocol.c:eb32_delete
Unexecuted instantiation: proxy.c:eb32_delete
Unexecuted instantiation: queue.c:eb32_delete
Unexecuted instantiation: regex.c:eb32_delete
Unexecuted instantiation: resolvers.c:eb32_delete
Unexecuted instantiation: ring.c:eb32_delete
Unexecuted instantiation: sample.c:eb32_delete
Unexecuted instantiation: server.c:eb32_delete
Unexecuted instantiation: session.c:eb32_delete
Unexecuted instantiation: signal.c:eb32_delete
Unexecuted instantiation: sink.c:eb32_delete
Unexecuted instantiation: sock.c:eb32_delete
Unexecuted instantiation: sock_inet.c:eb32_delete
Unexecuted instantiation: stats-html.c:eb32_delete
Unexecuted instantiation: stats-proxy.c:eb32_delete
Unexecuted instantiation: stats.c:eb32_delete
Unexecuted instantiation: stconn.c:eb32_delete
Unexecuted instantiation: stick_table.c:eb32_delete
Unexecuted instantiation: stream.c:eb32_delete
Unexecuted instantiation: systemd.c:eb32_delete
Unexecuted instantiation: task.c:eb32_delete
Unexecuted instantiation: tcp_rules.c:eb32_delete
Unexecuted instantiation: tcpcheck.c:eb32_delete
Unexecuted instantiation: thread.c:eb32_delete
Unexecuted instantiation: trace.c:eb32_delete
Unexecuted instantiation: vars.c:eb32_delete
Unexecuted instantiation: acl.c:eb32_delete
Unexecuted instantiation: action.c:eb32_delete
Unexecuted instantiation: activity.c:eb32_delete
Unexecuted instantiation: arg.c:eb32_delete
Unexecuted instantiation: backend.c:eb32_delete
Unexecuted instantiation: cfgcond.c:eb32_delete
Unexecuted instantiation: cfgparse-global.c:eb32_delete
Unexecuted instantiation: cfgparse-listen.c:eb32_delete
Unexecuted instantiation: check.c:eb32_delete
Unexecuted instantiation: compression.c:eb32_delete
Unexecuted instantiation: counters.c:eb32_delete
Unexecuted instantiation: dict.c:eb32_delete
Unexecuted instantiation: dns.c:eb32_delete
Unexecuted instantiation: dns_ring.c:eb32_delete
Unexecuted instantiation: ebimtree.c:eb32_delete
Unexecuted instantiation: ebistree.c:eb32_delete
Unexecuted instantiation: event_hdl.c:eb32_delete
Unexecuted instantiation: extcheck.c:eb32_delete
Unexecuted instantiation: filters.c:eb32_delete
Unexecuted instantiation: fix.c:eb32_delete
Unexecuted instantiation: flt_decomp.c:eb32_delete
Unexecuted instantiation: flt_http_comp.c:eb32_delete
Unexecuted instantiation: guid.c:eb32_delete
Unexecuted instantiation: h1.c:eb32_delete
Unexecuted instantiation: haterm.c:eb32_delete
Unexecuted instantiation: http_fetch.c:eb32_delete
Unexecuted instantiation: lb_chash.c:eb32_delete
Unexecuted instantiation: lb_fas.c:eb32_delete
Unexecuted instantiation: lb_fwlc.c:eb32_delete
Unexecuted instantiation: lb_fwrr.c:eb32_delete
Unexecuted instantiation: lb_map.c:eb32_delete
Unexecuted instantiation: mqtt.c:eb32_delete
Unexecuted instantiation: mux_spop.c:eb32_delete
Unexecuted instantiation: pattern.c:eb32_delete
Unexecuted instantiation: payload.c:eb32_delete
Unexecuted instantiation: proto_tcp.c:eb32_delete
Unexecuted instantiation: stats-file.c:eb32_delete
Unexecuted instantiation: stats-json.c:eb32_delete
Unexecuted instantiation: cache.c:eb32_delete
Unexecuted instantiation: fcgi-app.c:eb32_delete
Unexecuted instantiation: flt_spoe.c:eb32_delete
Unexecuted instantiation: h1_htx.c:eb32_delete
Unexecuted instantiation: shctx.c:eb32_delete
91
92
/*
93
 * The following functions are not inlined by default. They are declared
94
 * in eb32tree.c, which simply relies on their inline version.
95
 */
96
struct eb32_node *eb32_lookup(struct eb_root *root, u32 x);
97
struct eb32_node *eb32i_lookup(struct eb_root *root, s32 x);
98
struct eb32_node *eb32_lookup_le(struct eb_root *root, u32 x);
99
struct eb32_node *eb32_lookup_ge(struct eb_root *root, u32 x);
100
struct eb32_node *eb32_insert(struct eb_root *root, struct eb32_node *new);
101
struct eb32_node *eb32i_insert(struct eb_root *root, struct eb32_node *new);
102
103
/*
104
 * The following functions are less likely to be used directly, because their
105
 * code is larger. The non-inlined version is preferred.
106
 */
107
108
/* Delete node from the tree if it was linked in. Mark the node unused. */
109
static forceinline void __eb32_delete(struct eb32_node *eb32)
110
0
{
111
0
  __eb_delete(&eb32->node);
112
0
}
Unexecuted instantiation: http.c:__eb32_delete
Unexecuted instantiation: tools.c:__eb32_delete
Unexecuted instantiation: applet.c:__eb32_delete
Unexecuted instantiation: cfgparse.c:__eb32_delete
Unexecuted instantiation: channel.c:__eb32_delete
Unexecuted instantiation: chunk.c:__eb32_delete
Unexecuted instantiation: cli.c:__eb32_delete
Unexecuted instantiation: clock.c:__eb32_delete
Unexecuted instantiation: connection.c:__eb32_delete
Unexecuted instantiation: debug.c:__eb32_delete
Unexecuted instantiation: dgram.c:__eb32_delete
Unexecuted instantiation: dynbuf.c:__eb32_delete
Unexecuted instantiation: eb32tree.c:__eb32_delete
Unexecuted instantiation: errors.c:__eb32_delete
Unexecuted instantiation: fd.c:__eb32_delete
Unexecuted instantiation: freq_ctr.c:__eb32_delete
Unexecuted instantiation: frontend.c:__eb32_delete
Unexecuted instantiation: haproxy.c:__eb32_delete
Unexecuted instantiation: http_ana.c:__eb32_delete
Unexecuted instantiation: http_ext.c:__eb32_delete
Unexecuted instantiation: http_htx.c:__eb32_delete
Unexecuted instantiation: http_rules.c:__eb32_delete
Unexecuted instantiation: limits.c:__eb32_delete
Unexecuted instantiation: listener.c:__eb32_delete
Unexecuted instantiation: log.c:__eb32_delete
Unexecuted instantiation: mailers.c:__eb32_delete
Unexecuted instantiation: mworker.c:__eb32_delete
Unexecuted instantiation: peers.c:__eb32_delete
Unexecuted instantiation: pool.c:__eb32_delete
Unexecuted instantiation: proto_rhttp.c:__eb32_delete
Unexecuted instantiation: proto_sockpair.c:__eb32_delete
Unexecuted instantiation: protocol.c:__eb32_delete
Unexecuted instantiation: proxy.c:__eb32_delete
Unexecuted instantiation: queue.c:__eb32_delete
Unexecuted instantiation: regex.c:__eb32_delete
Unexecuted instantiation: resolvers.c:__eb32_delete
Unexecuted instantiation: ring.c:__eb32_delete
Unexecuted instantiation: sample.c:__eb32_delete
Unexecuted instantiation: server.c:__eb32_delete
Unexecuted instantiation: session.c:__eb32_delete
Unexecuted instantiation: signal.c:__eb32_delete
Unexecuted instantiation: sink.c:__eb32_delete
Unexecuted instantiation: sock.c:__eb32_delete
Unexecuted instantiation: sock_inet.c:__eb32_delete
Unexecuted instantiation: stats-html.c:__eb32_delete
Unexecuted instantiation: stats-proxy.c:__eb32_delete
Unexecuted instantiation: stats.c:__eb32_delete
Unexecuted instantiation: stconn.c:__eb32_delete
Unexecuted instantiation: stick_table.c:__eb32_delete
Unexecuted instantiation: stream.c:__eb32_delete
Unexecuted instantiation: systemd.c:__eb32_delete
Unexecuted instantiation: task.c:__eb32_delete
Unexecuted instantiation: tcp_rules.c:__eb32_delete
Unexecuted instantiation: tcpcheck.c:__eb32_delete
Unexecuted instantiation: thread.c:__eb32_delete
Unexecuted instantiation: trace.c:__eb32_delete
Unexecuted instantiation: vars.c:__eb32_delete
Unexecuted instantiation: acl.c:__eb32_delete
Unexecuted instantiation: action.c:__eb32_delete
Unexecuted instantiation: activity.c:__eb32_delete
Unexecuted instantiation: arg.c:__eb32_delete
Unexecuted instantiation: backend.c:__eb32_delete
Unexecuted instantiation: cfgcond.c:__eb32_delete
Unexecuted instantiation: cfgparse-global.c:__eb32_delete
Unexecuted instantiation: cfgparse-listen.c:__eb32_delete
Unexecuted instantiation: check.c:__eb32_delete
Unexecuted instantiation: compression.c:__eb32_delete
Unexecuted instantiation: counters.c:__eb32_delete
Unexecuted instantiation: dict.c:__eb32_delete
Unexecuted instantiation: dns.c:__eb32_delete
Unexecuted instantiation: dns_ring.c:__eb32_delete
Unexecuted instantiation: ebimtree.c:__eb32_delete
Unexecuted instantiation: ebistree.c:__eb32_delete
Unexecuted instantiation: event_hdl.c:__eb32_delete
Unexecuted instantiation: extcheck.c:__eb32_delete
Unexecuted instantiation: filters.c:__eb32_delete
Unexecuted instantiation: fix.c:__eb32_delete
Unexecuted instantiation: flt_decomp.c:__eb32_delete
Unexecuted instantiation: flt_http_comp.c:__eb32_delete
Unexecuted instantiation: guid.c:__eb32_delete
Unexecuted instantiation: h1.c:__eb32_delete
Unexecuted instantiation: haterm.c:__eb32_delete
Unexecuted instantiation: http_fetch.c:__eb32_delete
Unexecuted instantiation: lb_chash.c:__eb32_delete
Unexecuted instantiation: lb_fas.c:__eb32_delete
Unexecuted instantiation: lb_fwlc.c:__eb32_delete
Unexecuted instantiation: lb_fwrr.c:__eb32_delete
Unexecuted instantiation: lb_map.c:__eb32_delete
Unexecuted instantiation: mqtt.c:__eb32_delete
Unexecuted instantiation: mux_spop.c:__eb32_delete
Unexecuted instantiation: pattern.c:__eb32_delete
Unexecuted instantiation: payload.c:__eb32_delete
Unexecuted instantiation: proto_tcp.c:__eb32_delete
Unexecuted instantiation: stats-file.c:__eb32_delete
Unexecuted instantiation: stats-json.c:__eb32_delete
Unexecuted instantiation: cache.c:__eb32_delete
Unexecuted instantiation: fcgi-app.c:__eb32_delete
Unexecuted instantiation: flt_spoe.c:__eb32_delete
Unexecuted instantiation: h1_htx.c:__eb32_delete
Unexecuted instantiation: shctx.c:__eb32_delete
113
114
/*
115
 * Find the first occurrence of a key in the tree <root>. If none can be
116
 * found, return NULL.
117
 */
118
static forceinline struct eb32_node *__eb32_lookup(struct eb_root *root, u32 x)
119
0
{
120
0
  struct eb32_node *node;
121
0
  eb_troot_t *troot;
122
0
  u32 y, z;
123
124
0
  troot = root->b[EB_LEFT];
125
0
  if (unlikely(troot == NULL))
126
0
    return NULL;
127
128
0
  while (1) {
129
0
    if (unlikely(eb_gettag(troot) == EB_LEAF)) {
130
0
      node = container_of(eb_untag(troot, EB_LEAF),
131
0
              struct eb32_node, node.branches);
132
0
      if (node->key == x)
133
0
        return node;
134
0
      else
135
0
        return NULL;
136
0
    }
137
0
    node = container_of(eb_untag(troot, EB_NODE),
138
0
            struct eb32_node, node.branches);
139
140
0
    eb_prefetch(node->node.branches.b[0], 0);
141
0
    eb_prefetch(node->node.branches.b[1], 0);
142
143
0
    y = node->key ^ x;
144
0
    z = 1U << (node->node.bit & 31);
145
0
    troot = (x & z) ? node->node.branches.b[1] : node->node.branches.b[0];
146
147
0
    if (!y) {
148
      /* Either we found the node which holds the key, or
149
       * we have a dup tree. In the later case, we have to
150
       * walk it down left to get the first entry.
151
       */
152
0
      if (node->node.bit < 0) {
153
0
        troot = node->node.branches.b[EB_LEFT];
154
0
        while (eb_gettag(troot) != EB_LEAF)
155
0
          troot = (eb_untag(troot, EB_NODE))->b[EB_LEFT];
156
0
        node = container_of(eb_untag(troot, EB_LEAF),
157
0
                struct eb32_node, node.branches);
158
0
      }
159
0
      return node;
160
0
    }
161
162
0
    if (y & -(z << 1))
163
0
      return NULL; /* no more common bits */
164
0
  }
165
0
}
Unexecuted instantiation: http.c:__eb32_lookup
Unexecuted instantiation: tools.c:__eb32_lookup
Unexecuted instantiation: applet.c:__eb32_lookup
Unexecuted instantiation: cfgparse.c:__eb32_lookup
Unexecuted instantiation: channel.c:__eb32_lookup
Unexecuted instantiation: chunk.c:__eb32_lookup
Unexecuted instantiation: cli.c:__eb32_lookup
Unexecuted instantiation: clock.c:__eb32_lookup
Unexecuted instantiation: connection.c:__eb32_lookup
Unexecuted instantiation: debug.c:__eb32_lookup
Unexecuted instantiation: dgram.c:__eb32_lookup
Unexecuted instantiation: dynbuf.c:__eb32_lookup
Unexecuted instantiation: eb32tree.c:__eb32_lookup
Unexecuted instantiation: errors.c:__eb32_lookup
Unexecuted instantiation: fd.c:__eb32_lookup
Unexecuted instantiation: freq_ctr.c:__eb32_lookup
Unexecuted instantiation: frontend.c:__eb32_lookup
Unexecuted instantiation: haproxy.c:__eb32_lookup
Unexecuted instantiation: http_ana.c:__eb32_lookup
Unexecuted instantiation: http_ext.c:__eb32_lookup
Unexecuted instantiation: http_htx.c:__eb32_lookup
Unexecuted instantiation: http_rules.c:__eb32_lookup
Unexecuted instantiation: limits.c:__eb32_lookup
Unexecuted instantiation: listener.c:__eb32_lookup
Unexecuted instantiation: log.c:__eb32_lookup
Unexecuted instantiation: mailers.c:__eb32_lookup
Unexecuted instantiation: mworker.c:__eb32_lookup
Unexecuted instantiation: peers.c:__eb32_lookup
Unexecuted instantiation: pool.c:__eb32_lookup
Unexecuted instantiation: proto_rhttp.c:__eb32_lookup
Unexecuted instantiation: proto_sockpair.c:__eb32_lookup
Unexecuted instantiation: protocol.c:__eb32_lookup
Unexecuted instantiation: proxy.c:__eb32_lookup
Unexecuted instantiation: queue.c:__eb32_lookup
Unexecuted instantiation: regex.c:__eb32_lookup
Unexecuted instantiation: resolvers.c:__eb32_lookup
Unexecuted instantiation: ring.c:__eb32_lookup
Unexecuted instantiation: sample.c:__eb32_lookup
Unexecuted instantiation: server.c:__eb32_lookup
Unexecuted instantiation: session.c:__eb32_lookup
Unexecuted instantiation: signal.c:__eb32_lookup
Unexecuted instantiation: sink.c:__eb32_lookup
Unexecuted instantiation: sock.c:__eb32_lookup
Unexecuted instantiation: sock_inet.c:__eb32_lookup
Unexecuted instantiation: stats-html.c:__eb32_lookup
Unexecuted instantiation: stats-proxy.c:__eb32_lookup
Unexecuted instantiation: stats.c:__eb32_lookup
Unexecuted instantiation: stconn.c:__eb32_lookup
Unexecuted instantiation: stick_table.c:__eb32_lookup
Unexecuted instantiation: stream.c:__eb32_lookup
Unexecuted instantiation: systemd.c:__eb32_lookup
Unexecuted instantiation: task.c:__eb32_lookup
Unexecuted instantiation: tcp_rules.c:__eb32_lookup
Unexecuted instantiation: tcpcheck.c:__eb32_lookup
Unexecuted instantiation: thread.c:__eb32_lookup
Unexecuted instantiation: trace.c:__eb32_lookup
Unexecuted instantiation: vars.c:__eb32_lookup
Unexecuted instantiation: acl.c:__eb32_lookup
Unexecuted instantiation: action.c:__eb32_lookup
Unexecuted instantiation: activity.c:__eb32_lookup
Unexecuted instantiation: arg.c:__eb32_lookup
Unexecuted instantiation: backend.c:__eb32_lookup
Unexecuted instantiation: cfgcond.c:__eb32_lookup
Unexecuted instantiation: cfgparse-global.c:__eb32_lookup
Unexecuted instantiation: cfgparse-listen.c:__eb32_lookup
Unexecuted instantiation: check.c:__eb32_lookup
Unexecuted instantiation: compression.c:__eb32_lookup
Unexecuted instantiation: counters.c:__eb32_lookup
Unexecuted instantiation: dict.c:__eb32_lookup
Unexecuted instantiation: dns.c:__eb32_lookup
Unexecuted instantiation: dns_ring.c:__eb32_lookup
Unexecuted instantiation: ebimtree.c:__eb32_lookup
Unexecuted instantiation: ebistree.c:__eb32_lookup
Unexecuted instantiation: event_hdl.c:__eb32_lookup
Unexecuted instantiation: extcheck.c:__eb32_lookup
Unexecuted instantiation: filters.c:__eb32_lookup
Unexecuted instantiation: fix.c:__eb32_lookup
Unexecuted instantiation: flt_decomp.c:__eb32_lookup
Unexecuted instantiation: flt_http_comp.c:__eb32_lookup
Unexecuted instantiation: guid.c:__eb32_lookup
Unexecuted instantiation: h1.c:__eb32_lookup
Unexecuted instantiation: haterm.c:__eb32_lookup
Unexecuted instantiation: http_fetch.c:__eb32_lookup
Unexecuted instantiation: lb_chash.c:__eb32_lookup
Unexecuted instantiation: lb_fas.c:__eb32_lookup
Unexecuted instantiation: lb_fwlc.c:__eb32_lookup
Unexecuted instantiation: lb_fwrr.c:__eb32_lookup
Unexecuted instantiation: lb_map.c:__eb32_lookup
Unexecuted instantiation: mqtt.c:__eb32_lookup
Unexecuted instantiation: mux_spop.c:__eb32_lookup
Unexecuted instantiation: pattern.c:__eb32_lookup
Unexecuted instantiation: payload.c:__eb32_lookup
Unexecuted instantiation: proto_tcp.c:__eb32_lookup
Unexecuted instantiation: stats-file.c:__eb32_lookup
Unexecuted instantiation: stats-json.c:__eb32_lookup
Unexecuted instantiation: cache.c:__eb32_lookup
Unexecuted instantiation: fcgi-app.c:__eb32_lookup
Unexecuted instantiation: flt_spoe.c:__eb32_lookup
Unexecuted instantiation: h1_htx.c:__eb32_lookup
Unexecuted instantiation: shctx.c:__eb32_lookup
166
167
/*
168
 * Find the first occurrence of a signed key in the tree <root>. If none can
169
 * be found, return NULL.
170
 */
171
static forceinline struct eb32_node *__eb32i_lookup(struct eb_root *root, s32 x)
172
0
{
173
0
  struct eb32_node *node;
174
0
  eb_troot_t *troot;
175
0
  u32 key = x ^ 0x80000000;
176
0
  u32 y, z;
177
178
0
  troot = root->b[EB_LEFT];
179
0
  if (unlikely(troot == NULL))
180
0
    return NULL;
181
182
0
  while (1) {
183
0
    if (unlikely(eb_gettag(troot) == EB_LEAF)) {
184
0
      node = container_of(eb_untag(troot, EB_LEAF),
185
0
              struct eb32_node, node.branches);
186
0
      if (node->key == (u32)x)
187
0
        return node;
188
0
      else
189
0
        return NULL;
190
0
    }
191
0
    node = container_of(eb_untag(troot, EB_NODE),
192
0
            struct eb32_node, node.branches);
193
194
0
    eb_prefetch(node->node.branches.b[0], 0);
195
0
    eb_prefetch(node->node.branches.b[1], 0);
196
197
0
    y = node->key ^ x;
198
0
    z = 1U << (node->node.bit & 31);
199
0
    troot = (key & z) ? node->node.branches.b[1] : node->node.branches.b[0];
200
201
0
    if (!y) {
202
      /* Either we found the node which holds the key, or
203
       * we have a dup tree. In the later case, we have to
204
       * walk it down left to get the first entry.
205
       */
206
0
      if (node->node.bit < 0) {
207
0
        troot = node->node.branches.b[EB_LEFT];
208
0
        while (eb_gettag(troot) != EB_LEAF)
209
0
          troot = (eb_untag(troot, EB_NODE))->b[EB_LEFT];
210
0
        node = container_of(eb_untag(troot, EB_LEAF),
211
0
                struct eb32_node, node.branches);
212
0
      }
213
0
      return node;
214
0
    }
215
216
0
    if (y & -(z << 1))
217
0
      return NULL; /* no more common bits */
218
0
  }
219
0
}
Unexecuted instantiation: http.c:__eb32i_lookup
Unexecuted instantiation: tools.c:__eb32i_lookup
Unexecuted instantiation: applet.c:__eb32i_lookup
Unexecuted instantiation: cfgparse.c:__eb32i_lookup
Unexecuted instantiation: channel.c:__eb32i_lookup
Unexecuted instantiation: chunk.c:__eb32i_lookup
Unexecuted instantiation: cli.c:__eb32i_lookup
Unexecuted instantiation: clock.c:__eb32i_lookup
Unexecuted instantiation: connection.c:__eb32i_lookup
Unexecuted instantiation: debug.c:__eb32i_lookup
Unexecuted instantiation: dgram.c:__eb32i_lookup
Unexecuted instantiation: dynbuf.c:__eb32i_lookup
Unexecuted instantiation: eb32tree.c:__eb32i_lookup
Unexecuted instantiation: errors.c:__eb32i_lookup
Unexecuted instantiation: fd.c:__eb32i_lookup
Unexecuted instantiation: freq_ctr.c:__eb32i_lookup
Unexecuted instantiation: frontend.c:__eb32i_lookup
Unexecuted instantiation: haproxy.c:__eb32i_lookup
Unexecuted instantiation: http_ana.c:__eb32i_lookup
Unexecuted instantiation: http_ext.c:__eb32i_lookup
Unexecuted instantiation: http_htx.c:__eb32i_lookup
Unexecuted instantiation: http_rules.c:__eb32i_lookup
Unexecuted instantiation: limits.c:__eb32i_lookup
Unexecuted instantiation: listener.c:__eb32i_lookup
Unexecuted instantiation: log.c:__eb32i_lookup
Unexecuted instantiation: mailers.c:__eb32i_lookup
Unexecuted instantiation: mworker.c:__eb32i_lookup
Unexecuted instantiation: peers.c:__eb32i_lookup
Unexecuted instantiation: pool.c:__eb32i_lookup
Unexecuted instantiation: proto_rhttp.c:__eb32i_lookup
Unexecuted instantiation: proto_sockpair.c:__eb32i_lookup
Unexecuted instantiation: protocol.c:__eb32i_lookup
Unexecuted instantiation: proxy.c:__eb32i_lookup
Unexecuted instantiation: queue.c:__eb32i_lookup
Unexecuted instantiation: regex.c:__eb32i_lookup
Unexecuted instantiation: resolvers.c:__eb32i_lookup
Unexecuted instantiation: ring.c:__eb32i_lookup
Unexecuted instantiation: sample.c:__eb32i_lookup
Unexecuted instantiation: server.c:__eb32i_lookup
Unexecuted instantiation: session.c:__eb32i_lookup
Unexecuted instantiation: signal.c:__eb32i_lookup
Unexecuted instantiation: sink.c:__eb32i_lookup
Unexecuted instantiation: sock.c:__eb32i_lookup
Unexecuted instantiation: sock_inet.c:__eb32i_lookup
Unexecuted instantiation: stats-html.c:__eb32i_lookup
Unexecuted instantiation: stats-proxy.c:__eb32i_lookup
Unexecuted instantiation: stats.c:__eb32i_lookup
Unexecuted instantiation: stconn.c:__eb32i_lookup
Unexecuted instantiation: stick_table.c:__eb32i_lookup
Unexecuted instantiation: stream.c:__eb32i_lookup
Unexecuted instantiation: systemd.c:__eb32i_lookup
Unexecuted instantiation: task.c:__eb32i_lookup
Unexecuted instantiation: tcp_rules.c:__eb32i_lookup
Unexecuted instantiation: tcpcheck.c:__eb32i_lookup
Unexecuted instantiation: thread.c:__eb32i_lookup
Unexecuted instantiation: trace.c:__eb32i_lookup
Unexecuted instantiation: vars.c:__eb32i_lookup
Unexecuted instantiation: acl.c:__eb32i_lookup
Unexecuted instantiation: action.c:__eb32i_lookup
Unexecuted instantiation: activity.c:__eb32i_lookup
Unexecuted instantiation: arg.c:__eb32i_lookup
Unexecuted instantiation: backend.c:__eb32i_lookup
Unexecuted instantiation: cfgcond.c:__eb32i_lookup
Unexecuted instantiation: cfgparse-global.c:__eb32i_lookup
Unexecuted instantiation: cfgparse-listen.c:__eb32i_lookup
Unexecuted instantiation: check.c:__eb32i_lookup
Unexecuted instantiation: compression.c:__eb32i_lookup
Unexecuted instantiation: counters.c:__eb32i_lookup
Unexecuted instantiation: dict.c:__eb32i_lookup
Unexecuted instantiation: dns.c:__eb32i_lookup
Unexecuted instantiation: dns_ring.c:__eb32i_lookup
Unexecuted instantiation: ebimtree.c:__eb32i_lookup
Unexecuted instantiation: ebistree.c:__eb32i_lookup
Unexecuted instantiation: event_hdl.c:__eb32i_lookup
Unexecuted instantiation: extcheck.c:__eb32i_lookup
Unexecuted instantiation: filters.c:__eb32i_lookup
Unexecuted instantiation: fix.c:__eb32i_lookup
Unexecuted instantiation: flt_decomp.c:__eb32i_lookup
Unexecuted instantiation: flt_http_comp.c:__eb32i_lookup
Unexecuted instantiation: guid.c:__eb32i_lookup
Unexecuted instantiation: h1.c:__eb32i_lookup
Unexecuted instantiation: haterm.c:__eb32i_lookup
Unexecuted instantiation: http_fetch.c:__eb32i_lookup
Unexecuted instantiation: lb_chash.c:__eb32i_lookup
Unexecuted instantiation: lb_fas.c:__eb32i_lookup
Unexecuted instantiation: lb_fwlc.c:__eb32i_lookup
Unexecuted instantiation: lb_fwrr.c:__eb32i_lookup
Unexecuted instantiation: lb_map.c:__eb32i_lookup
Unexecuted instantiation: mqtt.c:__eb32i_lookup
Unexecuted instantiation: mux_spop.c:__eb32i_lookup
Unexecuted instantiation: pattern.c:__eb32i_lookup
Unexecuted instantiation: payload.c:__eb32i_lookup
Unexecuted instantiation: proto_tcp.c:__eb32i_lookup
Unexecuted instantiation: stats-file.c:__eb32i_lookup
Unexecuted instantiation: stats-json.c:__eb32i_lookup
Unexecuted instantiation: cache.c:__eb32i_lookup
Unexecuted instantiation: fcgi-app.c:__eb32i_lookup
Unexecuted instantiation: flt_spoe.c:__eb32i_lookup
Unexecuted instantiation: h1_htx.c:__eb32i_lookup
Unexecuted instantiation: shctx.c:__eb32i_lookup
220
221
/* Insert eb32_node <new> into subtree starting at node root <root>.
222
 * Only new->key needs be set with the key. The eb32_node is returned.
223
 * If root->b[EB_RGHT]==1, the tree may only contain unique keys.
224
 */
225
static forceinline struct eb32_node *
226
0
__eb32_insert(struct eb_root *root, struct eb32_node *new) {
227
0
  struct eb32_node *old;
228
0
  unsigned int side;
229
0
  eb_troot_t *troot, **up_ptr;
230
0
  u32 newkey; /* caching the key saves approximately one cycle */
231
0
  eb_troot_t *root_right;
232
0
  eb_troot_t *new_left, *new_rght;
233
0
  eb_troot_t *new_leaf;
234
0
  int old_node_bit;
235
236
0
  side = EB_LEFT;
237
0
  troot = root->b[EB_LEFT];
238
0
  root_right = root->b[EB_RGHT];
239
0
  if (unlikely(troot == NULL)) {
240
    /* Tree is empty, insert the leaf part below the left branch */
241
0
    root->b[EB_LEFT] = eb_dotag(&new->node.branches, EB_LEAF);
242
0
    new->node.leaf_p = eb_dotag(root, EB_LEFT);
243
0
    new->node.node_p = NULL; /* node part unused */
244
0
    return new;
245
0
  }
246
247
  /* The tree descent is fairly easy :
248
   *  - first, check if we have reached a leaf node
249
   *  - second, check if we have gone too far
250
   *  - third, reiterate
251
   * Everywhere, we use <new> for the node node we are inserting, <root>
252
   * for the node we attach it to, and <old> for the node we are
253
   * displacing below <new>. <troot> will always point to the future node
254
   * (tagged with its type). <side> carries the side the node <new> is
255
   * attached to below its parent, which is also where previous node
256
   * was attached. <newkey> carries the key being inserted.
257
   */
258
0
  newkey = new->key;
259
260
0
  while (1) {
261
0
    if (eb_gettag(troot) == EB_LEAF) {
262
      /* insert above a leaf */
263
0
      old = container_of(eb_untag(troot, EB_LEAF),
264
0
              struct eb32_node, node.branches);
265
0
      new->node.node_p = old->node.leaf_p;
266
0
      up_ptr = &old->node.leaf_p;
267
0
      break;
268
0
    }
269
270
    /* OK we're walking down this link */
271
0
    old = container_of(eb_untag(troot, EB_NODE),
272
0
            struct eb32_node, node.branches);
273
274
0
    eb_prefetch(old->node.branches.b[0], 0);
275
0
    eb_prefetch(old->node.branches.b[1], 0);
276
277
0
    old_node_bit = old->node.bit;
278
279
    /* Stop going down when we don't have common bits anymore. We
280
     * also stop in front of a duplicates tree because it means we
281
     * have to insert above.
282
     */
283
284
0
    if ((old_node_bit < 0) || /* we're above a duplicate tree, stop here */
285
0
        (((new->key ^ old->key) >> old_node_bit) >= EB_NODE_BRANCHES)) {
286
      /* The tree did not contain the key, so we insert <new> before the node
287
       * <old>, and set ->bit to designate the lowest bit position in <new>
288
       * which applies to ->branches.b[].
289
       */
290
0
      new->node.node_p = old->node.node_p;
291
0
      up_ptr = &old->node.node_p;
292
0
      break;
293
0
    }
294
295
    /* walk down */
296
0
    side = (newkey >> old_node_bit) & EB_NODE_BRANCH_MASK;
297
0
    troot = side ? old->node.branches.b[1] : old->node.branches.b[0];
298
0
    root = &old->node.branches;
299
0
  }
300
301
0
  new_left = eb_dotag(&new->node.branches, EB_LEFT);
302
0
  new_rght = eb_dotag(&new->node.branches, EB_RGHT);
303
0
  new_leaf = eb_dotag(&new->node.branches, EB_LEAF);
304
305
  /* We need the common higher bits between new->key and old->key.
306
   * What differences are there between new->key and the node here ?
307
   * NOTE that bit(new) is always < bit(root) because highest
308
   * bit of new->key and old->key are identical here (otherwise they
309
   * would sit on different branches).
310
   */
311
312
0
  if (new->key == old->key) {
313
0
    new->node.bit = -1; /* mark as new dup tree, just in case */
314
315
0
    if (likely(eb_gettag(root_right))) {
316
      /* we refuse to duplicate this key if the tree is
317
       * tagged as containing only unique keys.
318
       */
319
0
      return old;
320
0
    }
321
322
0
    if (eb_gettag(troot) != EB_LEAF) {
323
      /* there was already a dup tree below */
324
0
      struct eb_node *ret;
325
0
      ret = eb_insert_dup(&old->node, &new->node);
326
0
      return container_of(ret, struct eb32_node, node);
327
0
    }
328
    /* otherwise fall through */
329
0
  }
330
0
  else {
331
    /* note that if EB_NODE_BITS > 1, we should check that it's still >= 0 */
332
0
    new->node.bit = flsnz(new->key ^ old->key) - EB_NODE_BITS;
333
0
  }
334
335
0
  if (new->key >= old->key) {
336
0
    new->node.branches.b[EB_LEFT] = troot;
337
0
    new->node.branches.b[EB_RGHT] = new_leaf;
338
0
    new->node.leaf_p = new_rght;
339
0
    *up_ptr = new_left;
340
0
  }
341
0
  else {
342
0
    new->node.branches.b[EB_LEFT] = new_leaf;
343
0
    new->node.branches.b[EB_RGHT] = troot;
344
0
    new->node.leaf_p = new_left;
345
0
    *up_ptr = new_rght;
346
0
  }
347
348
  /* Ok, now we are inserting <new> between <root> and <old>. <old>'s
349
   * parent is already set to <new>, and the <root>'s branch is still in
350
   * <side>. Update the root's leaf till we have it. Note that we can also
351
   * find the side by checking the side of new->node.node_p.
352
   */
353
354
0
  root->b[side] = eb_dotag(&new->node.branches, EB_NODE);
355
0
  return new;
356
0
}
Unexecuted instantiation: http.c:__eb32_insert
Unexecuted instantiation: tools.c:__eb32_insert
Unexecuted instantiation: applet.c:__eb32_insert
Unexecuted instantiation: cfgparse.c:__eb32_insert
Unexecuted instantiation: channel.c:__eb32_insert
Unexecuted instantiation: chunk.c:__eb32_insert
Unexecuted instantiation: cli.c:__eb32_insert
Unexecuted instantiation: clock.c:__eb32_insert
Unexecuted instantiation: connection.c:__eb32_insert
Unexecuted instantiation: debug.c:__eb32_insert
Unexecuted instantiation: dgram.c:__eb32_insert
Unexecuted instantiation: dynbuf.c:__eb32_insert
Unexecuted instantiation: eb32tree.c:__eb32_insert
Unexecuted instantiation: errors.c:__eb32_insert
Unexecuted instantiation: fd.c:__eb32_insert
Unexecuted instantiation: freq_ctr.c:__eb32_insert
Unexecuted instantiation: frontend.c:__eb32_insert
Unexecuted instantiation: haproxy.c:__eb32_insert
Unexecuted instantiation: http_ana.c:__eb32_insert
Unexecuted instantiation: http_ext.c:__eb32_insert
Unexecuted instantiation: http_htx.c:__eb32_insert
Unexecuted instantiation: http_rules.c:__eb32_insert
Unexecuted instantiation: limits.c:__eb32_insert
Unexecuted instantiation: listener.c:__eb32_insert
Unexecuted instantiation: log.c:__eb32_insert
Unexecuted instantiation: mailers.c:__eb32_insert
Unexecuted instantiation: mworker.c:__eb32_insert
Unexecuted instantiation: peers.c:__eb32_insert
Unexecuted instantiation: pool.c:__eb32_insert
Unexecuted instantiation: proto_rhttp.c:__eb32_insert
Unexecuted instantiation: proto_sockpair.c:__eb32_insert
Unexecuted instantiation: protocol.c:__eb32_insert
Unexecuted instantiation: proxy.c:__eb32_insert
Unexecuted instantiation: queue.c:__eb32_insert
Unexecuted instantiation: regex.c:__eb32_insert
Unexecuted instantiation: resolvers.c:__eb32_insert
Unexecuted instantiation: ring.c:__eb32_insert
Unexecuted instantiation: sample.c:__eb32_insert
Unexecuted instantiation: server.c:__eb32_insert
Unexecuted instantiation: session.c:__eb32_insert
Unexecuted instantiation: signal.c:__eb32_insert
Unexecuted instantiation: sink.c:__eb32_insert
Unexecuted instantiation: sock.c:__eb32_insert
Unexecuted instantiation: sock_inet.c:__eb32_insert
Unexecuted instantiation: stats-html.c:__eb32_insert
Unexecuted instantiation: stats-proxy.c:__eb32_insert
Unexecuted instantiation: stats.c:__eb32_insert
Unexecuted instantiation: stconn.c:__eb32_insert
Unexecuted instantiation: stick_table.c:__eb32_insert
Unexecuted instantiation: stream.c:__eb32_insert
Unexecuted instantiation: systemd.c:__eb32_insert
Unexecuted instantiation: task.c:__eb32_insert
Unexecuted instantiation: tcp_rules.c:__eb32_insert
Unexecuted instantiation: tcpcheck.c:__eb32_insert
Unexecuted instantiation: thread.c:__eb32_insert
Unexecuted instantiation: trace.c:__eb32_insert
Unexecuted instantiation: vars.c:__eb32_insert
Unexecuted instantiation: acl.c:__eb32_insert
Unexecuted instantiation: action.c:__eb32_insert
Unexecuted instantiation: activity.c:__eb32_insert
Unexecuted instantiation: arg.c:__eb32_insert
Unexecuted instantiation: backend.c:__eb32_insert
Unexecuted instantiation: cfgcond.c:__eb32_insert
Unexecuted instantiation: cfgparse-global.c:__eb32_insert
Unexecuted instantiation: cfgparse-listen.c:__eb32_insert
Unexecuted instantiation: check.c:__eb32_insert
Unexecuted instantiation: compression.c:__eb32_insert
Unexecuted instantiation: counters.c:__eb32_insert
Unexecuted instantiation: dict.c:__eb32_insert
Unexecuted instantiation: dns.c:__eb32_insert
Unexecuted instantiation: dns_ring.c:__eb32_insert
Unexecuted instantiation: ebimtree.c:__eb32_insert
Unexecuted instantiation: ebistree.c:__eb32_insert
Unexecuted instantiation: event_hdl.c:__eb32_insert
Unexecuted instantiation: extcheck.c:__eb32_insert
Unexecuted instantiation: filters.c:__eb32_insert
Unexecuted instantiation: fix.c:__eb32_insert
Unexecuted instantiation: flt_decomp.c:__eb32_insert
Unexecuted instantiation: flt_http_comp.c:__eb32_insert
Unexecuted instantiation: guid.c:__eb32_insert
Unexecuted instantiation: h1.c:__eb32_insert
Unexecuted instantiation: haterm.c:__eb32_insert
Unexecuted instantiation: http_fetch.c:__eb32_insert
Unexecuted instantiation: lb_chash.c:__eb32_insert
Unexecuted instantiation: lb_fas.c:__eb32_insert
Unexecuted instantiation: lb_fwlc.c:__eb32_insert
Unexecuted instantiation: lb_fwrr.c:__eb32_insert
Unexecuted instantiation: lb_map.c:__eb32_insert
Unexecuted instantiation: mqtt.c:__eb32_insert
Unexecuted instantiation: mux_spop.c:__eb32_insert
Unexecuted instantiation: pattern.c:__eb32_insert
Unexecuted instantiation: payload.c:__eb32_insert
Unexecuted instantiation: proto_tcp.c:__eb32_insert
Unexecuted instantiation: stats-file.c:__eb32_insert
Unexecuted instantiation: stats-json.c:__eb32_insert
Unexecuted instantiation: cache.c:__eb32_insert
Unexecuted instantiation: fcgi-app.c:__eb32_insert
Unexecuted instantiation: flt_spoe.c:__eb32_insert
Unexecuted instantiation: h1_htx.c:__eb32_insert
Unexecuted instantiation: shctx.c:__eb32_insert
357
358
/* Insert eb32_node <new> into subtree starting at node root <root>, using
359
 * signed keys. Only new->key needs be set with the key. The eb32_node
360
 * is returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys.
361
 */
362
static forceinline struct eb32_node *
363
0
__eb32i_insert(struct eb_root *root, struct eb32_node *new) {
364
0
  struct eb32_node *old;
365
0
  unsigned int side;
366
0
  eb_troot_t *troot, **up_ptr;
367
0
  int newkey; /* caching the key saves approximately one cycle */
368
0
  eb_troot_t *root_right;
369
0
  eb_troot_t *new_left, *new_rght;
370
0
  eb_troot_t *new_leaf;
371
0
  int old_node_bit;
372
373
0
  side = EB_LEFT;
374
0
  troot = root->b[EB_LEFT];
375
0
  root_right = root->b[EB_RGHT];
376
0
  if (unlikely(troot == NULL)) {
377
    /* Tree is empty, insert the leaf part below the left branch */
378
0
    root->b[EB_LEFT] = eb_dotag(&new->node.branches, EB_LEAF);
379
0
    new->node.leaf_p = eb_dotag(root, EB_LEFT);
380
0
    new->node.node_p = NULL; /* node part unused */
381
0
    return new;
382
0
  }
383
384
  /* The tree descent is fairly easy :
385
   *  - first, check if we have reached a leaf node
386
   *  - second, check if we have gone too far
387
   *  - third, reiterate
388
   * Everywhere, we use <new> for the node node we are inserting, <root>
389
   * for the node we attach it to, and <old> for the node we are
390
   * displacing below <new>. <troot> will always point to the future node
391
   * (tagged with its type). <side> carries the side the node <new> is
392
   * attached to below its parent, which is also where previous node
393
   * was attached. <newkey> carries a high bit shift of the key being
394
   * inserted in order to have negative keys stored before positive
395
   * ones.
396
   */
397
0
  newkey = new->key + 0x80000000;
398
399
0
  while (1) {
400
0
    if (eb_gettag(troot) == EB_LEAF) {
401
0
      old = container_of(eb_untag(troot, EB_LEAF),
402
0
              struct eb32_node, node.branches);
403
0
      new->node.node_p = old->node.leaf_p;
404
0
      up_ptr = &old->node.leaf_p;
405
0
      break;
406
0
    }
407
408
    /* OK we're walking down this link */
409
0
    old = container_of(eb_untag(troot, EB_NODE),
410
0
            struct eb32_node, node.branches);
411
412
0
    eb_prefetch(old->node.branches.b[0], 0);
413
0
    eb_prefetch(old->node.branches.b[1], 0);
414
415
0
    old_node_bit = old->node.bit;
416
417
    /* Stop going down when we don't have common bits anymore. We
418
     * also stop in front of a duplicates tree because it means we
419
     * have to insert above.
420
     */
421
422
0
    if ((old_node_bit < 0) || /* we're above a duplicate tree, stop here */
423
0
        (((new->key ^ old->key) >> old_node_bit) >= EB_NODE_BRANCHES)) {
424
      /* The tree did not contain the key, so we insert <new> before the node
425
       * <old>, and set ->bit to designate the lowest bit position in <new>
426
       * which applies to ->branches.b[].
427
       */
428
0
      new->node.node_p = old->node.node_p;
429
0
      up_ptr = &old->node.node_p;
430
0
      break;
431
0
    }
432
433
    /* walk down */
434
0
    side = (newkey >> old_node_bit) & EB_NODE_BRANCH_MASK;
435
0
    troot = side ? old->node.branches.b[1] : old->node.branches.b[0];
436
0
    root = &old->node.branches;
437
0
  }
438
439
0
  new_left = eb_dotag(&new->node.branches, EB_LEFT);
440
0
  new_rght = eb_dotag(&new->node.branches, EB_RGHT);
441
0
  new_leaf = eb_dotag(&new->node.branches, EB_LEAF);
442
443
  /* We need the common higher bits between new->key and old->key.
444
   * What differences are there between new->key and the node here ?
445
   * NOTE that bit(new) is always < bit(root) because highest
446
   * bit of new->key and old->key are identical here (otherwise they
447
   * would sit on different branches).
448
   */
449
450
0
  if (new->key == old->key) {
451
0
    new->node.bit = -1; /* mark as new dup tree, just in case */
452
453
0
    if (likely(eb_gettag(root_right))) {
454
      /* we refuse to duplicate this key if the tree is
455
       * tagged as containing only unique keys.
456
       */
457
0
      return old;
458
0
    }
459
460
0
    if (eb_gettag(troot) != EB_LEAF) {
461
      /* there was already a dup tree below */
462
0
      struct eb_node *ret;
463
0
      ret = eb_insert_dup(&old->node, &new->node);
464
0
      return container_of(ret, struct eb32_node, node);
465
0
    }
466
    /* otherwise fall through */
467
0
  }
468
0
  else {
469
    /* note that if EB_NODE_BITS > 1, we should check that it's still >= 0 */
470
0
    new->node.bit = flsnz(new->key ^ old->key) - EB_NODE_BITS;
471
0
  }
472
473
0
  if ((s32)new->key >= (s32)old->key) {
474
0
    new->node.branches.b[EB_LEFT] = troot;
475
0
    new->node.branches.b[EB_RGHT] = new_leaf;
476
0
    new->node.leaf_p = new_rght;
477
0
    *up_ptr = new_left;
478
0
  }
479
0
  else {
480
0
    new->node.branches.b[EB_LEFT] = new_leaf;
481
0
    new->node.branches.b[EB_RGHT] = troot;
482
0
    new->node.leaf_p = new_left;
483
0
    *up_ptr = new_rght;
484
0
  }
485
486
  /* Ok, now we are inserting <new> between <root> and <old>. <old>'s
487
   * parent is already set to <new>, and the <root>'s branch is still in
488
   * <side>. Update the root's leaf till we have it. Note that we can also
489
   * find the side by checking the side of new->node.node_p.
490
   */
491
492
0
  root->b[side] = eb_dotag(&new->node.branches, EB_NODE);
493
0
  return new;
494
0
}
Unexecuted instantiation: http.c:__eb32i_insert
Unexecuted instantiation: tools.c:__eb32i_insert
Unexecuted instantiation: applet.c:__eb32i_insert
Unexecuted instantiation: cfgparse.c:__eb32i_insert
Unexecuted instantiation: channel.c:__eb32i_insert
Unexecuted instantiation: chunk.c:__eb32i_insert
Unexecuted instantiation: cli.c:__eb32i_insert
Unexecuted instantiation: clock.c:__eb32i_insert
Unexecuted instantiation: connection.c:__eb32i_insert
Unexecuted instantiation: debug.c:__eb32i_insert
Unexecuted instantiation: dgram.c:__eb32i_insert
Unexecuted instantiation: dynbuf.c:__eb32i_insert
Unexecuted instantiation: eb32tree.c:__eb32i_insert
Unexecuted instantiation: errors.c:__eb32i_insert
Unexecuted instantiation: fd.c:__eb32i_insert
Unexecuted instantiation: freq_ctr.c:__eb32i_insert
Unexecuted instantiation: frontend.c:__eb32i_insert
Unexecuted instantiation: haproxy.c:__eb32i_insert
Unexecuted instantiation: http_ana.c:__eb32i_insert
Unexecuted instantiation: http_ext.c:__eb32i_insert
Unexecuted instantiation: http_htx.c:__eb32i_insert
Unexecuted instantiation: http_rules.c:__eb32i_insert
Unexecuted instantiation: limits.c:__eb32i_insert
Unexecuted instantiation: listener.c:__eb32i_insert
Unexecuted instantiation: log.c:__eb32i_insert
Unexecuted instantiation: mailers.c:__eb32i_insert
Unexecuted instantiation: mworker.c:__eb32i_insert
Unexecuted instantiation: peers.c:__eb32i_insert
Unexecuted instantiation: pool.c:__eb32i_insert
Unexecuted instantiation: proto_rhttp.c:__eb32i_insert
Unexecuted instantiation: proto_sockpair.c:__eb32i_insert
Unexecuted instantiation: protocol.c:__eb32i_insert
Unexecuted instantiation: proxy.c:__eb32i_insert
Unexecuted instantiation: queue.c:__eb32i_insert
Unexecuted instantiation: regex.c:__eb32i_insert
Unexecuted instantiation: resolvers.c:__eb32i_insert
Unexecuted instantiation: ring.c:__eb32i_insert
Unexecuted instantiation: sample.c:__eb32i_insert
Unexecuted instantiation: server.c:__eb32i_insert
Unexecuted instantiation: session.c:__eb32i_insert
Unexecuted instantiation: signal.c:__eb32i_insert
Unexecuted instantiation: sink.c:__eb32i_insert
Unexecuted instantiation: sock.c:__eb32i_insert
Unexecuted instantiation: sock_inet.c:__eb32i_insert
Unexecuted instantiation: stats-html.c:__eb32i_insert
Unexecuted instantiation: stats-proxy.c:__eb32i_insert
Unexecuted instantiation: stats.c:__eb32i_insert
Unexecuted instantiation: stconn.c:__eb32i_insert
Unexecuted instantiation: stick_table.c:__eb32i_insert
Unexecuted instantiation: stream.c:__eb32i_insert
Unexecuted instantiation: systemd.c:__eb32i_insert
Unexecuted instantiation: task.c:__eb32i_insert
Unexecuted instantiation: tcp_rules.c:__eb32i_insert
Unexecuted instantiation: tcpcheck.c:__eb32i_insert
Unexecuted instantiation: thread.c:__eb32i_insert
Unexecuted instantiation: trace.c:__eb32i_insert
Unexecuted instantiation: vars.c:__eb32i_insert
Unexecuted instantiation: acl.c:__eb32i_insert
Unexecuted instantiation: action.c:__eb32i_insert
Unexecuted instantiation: activity.c:__eb32i_insert
Unexecuted instantiation: arg.c:__eb32i_insert
Unexecuted instantiation: backend.c:__eb32i_insert
Unexecuted instantiation: cfgcond.c:__eb32i_insert
Unexecuted instantiation: cfgparse-global.c:__eb32i_insert
Unexecuted instantiation: cfgparse-listen.c:__eb32i_insert
Unexecuted instantiation: check.c:__eb32i_insert
Unexecuted instantiation: compression.c:__eb32i_insert
Unexecuted instantiation: counters.c:__eb32i_insert
Unexecuted instantiation: dict.c:__eb32i_insert
Unexecuted instantiation: dns.c:__eb32i_insert
Unexecuted instantiation: dns_ring.c:__eb32i_insert
Unexecuted instantiation: ebimtree.c:__eb32i_insert
Unexecuted instantiation: ebistree.c:__eb32i_insert
Unexecuted instantiation: event_hdl.c:__eb32i_insert
Unexecuted instantiation: extcheck.c:__eb32i_insert
Unexecuted instantiation: filters.c:__eb32i_insert
Unexecuted instantiation: fix.c:__eb32i_insert
Unexecuted instantiation: flt_decomp.c:__eb32i_insert
Unexecuted instantiation: flt_http_comp.c:__eb32i_insert
Unexecuted instantiation: guid.c:__eb32i_insert
Unexecuted instantiation: h1.c:__eb32i_insert
Unexecuted instantiation: haterm.c:__eb32i_insert
Unexecuted instantiation: http_fetch.c:__eb32i_insert
Unexecuted instantiation: lb_chash.c:__eb32i_insert
Unexecuted instantiation: lb_fas.c:__eb32i_insert
Unexecuted instantiation: lb_fwlc.c:__eb32i_insert
Unexecuted instantiation: lb_fwrr.c:__eb32i_insert
Unexecuted instantiation: lb_map.c:__eb32i_insert
Unexecuted instantiation: mqtt.c:__eb32i_insert
Unexecuted instantiation: mux_spop.c:__eb32i_insert
Unexecuted instantiation: pattern.c:__eb32i_insert
Unexecuted instantiation: payload.c:__eb32i_insert
Unexecuted instantiation: proto_tcp.c:__eb32i_insert
Unexecuted instantiation: stats-file.c:__eb32i_insert
Unexecuted instantiation: stats-json.c:__eb32i_insert
Unexecuted instantiation: cache.c:__eb32i_insert
Unexecuted instantiation: fcgi-app.c:__eb32i_insert
Unexecuted instantiation: flt_spoe.c:__eb32i_insert
Unexecuted instantiation: h1_htx.c:__eb32i_insert
Unexecuted instantiation: shctx.c:__eb32i_insert
495
496
#endif /* _EB32_TREE_H */