Coverage Report

Created: 2026-09-03 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/haproxy/include/haproxy/fd.h
Line
Count
Source
1
/*
2
 * include/haproxy/fd.h
3
 * File descriptors states - exported variables and functions
4
 *
5
 * Copyright (C) 2000-2020 Willy Tarreau - w@1wt.eu
6
 *
7
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation, version 2.1
10
 * exclusively.
11
 *
12
 * This library is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with this library; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
22
#ifndef _HAPROXY_FD_H
23
#define _HAPROXY_FD_H
24
25
#include <sys/time.h>
26
#include <sys/types.h>
27
#include <stdio.h>
28
#include <unistd.h>
29
#include <import/ist.h>
30
#include <haproxy/api.h>
31
#include <haproxy/atomic.h>
32
#include <haproxy/fd-t.h>
33
#include <haproxy/global.h>
34
#include <haproxy/thread.h>
35
36
/* public variables */
37
38
extern struct poller cur_poller; /* the current poller */
39
extern int nbpollers;
40
extern struct poller pollers[MAX_POLLERS];   /* all registered pollers */
41
extern THREAD_LOCAL struct fdtab *fdtab;     /* array of all the file descriptors */
42
extern int totalconn;                   /* total # of terminated sessions */
43
extern int actconn;                     /* # of active sessions */
44
45
extern volatile struct fdlist update_list[MAX_TGROUPS];
46
extern THREAD_LOCAL struct polled_mask *polled_mask; /* Array for the polled_mask of each fd */
47
48
extern THREAD_LOCAL int *fd_updt;  // FD updates list
49
extern THREAD_LOCAL int fd_nbupdt; // number of updates in the list
50
extern THREAD_LOCAL int fd_highest;// highest FD known by the current thread
51
52
extern int poller_wr_pipe[MAX_THREADS];
53
54
extern volatile int ha_used_fds; // Number of FDs we're currently using
55
56
/* Deletes an FD from the fdsets.
57
 * The file descriptor is also closed.
58
 */
59
void fd_delete(int fd);
60
void _fd_delete_orphan(int fd);
61
62
/* makes the new fd non-blocking and clears all other O_* flags;
63
 * this is meant to be used on new FDs. Returns -1 on failure.
64
 */
65
int fd_set_nonblock(int fd);
66
67
/* makes the fd close-on-exec; returns -1 on failure. */
68
int fd_set_cloexec(int fd);
69
70
/* Migrate a FD to a new thread <new_tid>. */
71
void fd_migrate_on(int fd, uint new_tid);
72
73
/*
74
 * Take over a FD belonging to another thread.
75
 * Returns 0 on success, and -1 on failure.
76
 */
77
int fd_takeover(int fd, void *expected_owner);
78
79
ssize_t fd_write_frag_line(int fd, size_t maxlen, const struct ist pfx[], size_t npfx, const struct ist msg[], size_t nmsg, int nl);
80
81
/* close all FDs starting from <start> */
82
void my_closefrom(int start);
83
84
int compute_poll_timeout(int next);
85
void fd_leaving_poll(int wait_time, int status);
86
87
/* disable the specified poller */
88
void disable_poller(const char *poller_name);
89
90
void poller_pipe_io_handler(int fd);
91
92
/*
93
 * Initialize the pollers till the best one is found.
94
 * If none works, returns 0, otherwise 1.
95
 * The pollers register themselves just before main() is called.
96
 */
97
int init_pollers(void);
98
99
int fd_precreate_poller_pipes(void);
100
101
/*
102
 * Deinitialize the pollers.
103
 */
104
void deinit_pollers(void);
105
106
/*
107
 * Some pollers may lose their connection after a fork(). It may be necessary
108
 * to create initialize part of them again. Returns 0 in case of failure,
109
 * otherwise 1. The fork() function may be NULL if unused. In case of error,
110
 * the the current poller is destroyed and the caller is responsible for trying
111
 * another one by calling init_pollers() again.
112
 */
113
int fork_poller(void);
114
115
/*
116
 * Lists the known pollers on <out>.
117
 * Should be performed only before initialization.
118
 */
119
int list_pollers(FILE *out);
120
121
/*
122
 * Runs the polling loop
123
 */
124
void run_poller();
125
126
void fd_add_to_fd_list(volatile struct fdlist *list, int fd);
127
void fd_rm_from_fd_list(volatile struct fdlist *list, int fd);
128
void updt_fd_polling(const int fd);
129
int fd_update_events(int fd, uint evts);
130
void fd_reregister_all(int tgrp, ulong mask);
131
132
/* Called from the poller to acknowledge we read an entry from the global
133
 * update list, to remove our bit from the update_mask, and remove it from
134
 * the list if we were the last one.
135
 */
136
static inline void done_update_polling(int fd)
137
0
{
138
0
  unsigned long update_mask;
139
0
140
0
  update_mask = _HA_ATOMIC_AND_FETCH(&fdtab[fd].update_mask, ~ti->ltid_bit);
141
0
  while ((update_mask & _HA_ATOMIC_LOAD(&tg->threads_enabled)) == 0) {
142
0
    /* If we were the last one that had to update that entry, remove it from the list */
143
0
    fd_rm_from_fd_list(&update_list[tgid - 1], fd);
144
0
    update_mask = _HA_ATOMIC_LOAD(&fdtab[fd].update_mask);
145
0
    if ((update_mask & _HA_ATOMIC_LOAD(&tg->threads_enabled)) != 0) {
146
0
      /* Maybe it's been re-updated in the meanwhile, and we
147
0
       * wrongly removed it from the list, if so, re-add it
148
0
       */
149
0
      fd_add_to_fd_list(&update_list[tgid - 1], fd);
150
0
      update_mask = _HA_ATOMIC_LOAD(&fdtab[fd].update_mask);
151
0
      /* And then check again, just in case after all it
152
0
       * should be removed, even if it's very unlikely, given
153
0
       * the current thread wouldn't have been able to take
154
0
       * care of it yet */
155
0
    } else
156
0
      break;
157
0
  }
158
0
}
Unexecuted instantiation: haproxy.c:done_update_polling
Unexecuted instantiation: listener.c:done_update_polling
Unexecuted instantiation: log.c:done_update_polling
Unexecuted instantiation: mworker.c:done_update_polling
Unexecuted instantiation: peers.c:done_update_polling
Unexecuted instantiation: pool.c:done_update_polling
Unexecuted instantiation: proto_sockpair.c:done_update_polling
Unexecuted instantiation: protocol.c:done_update_polling
Unexecuted instantiation: proxy.c:done_update_polling
Unexecuted instantiation: resolvers.c:done_update_polling
Unexecuted instantiation: ring.c:done_update_polling
Unexecuted instantiation: sample.c:done_update_polling
Unexecuted instantiation: server.c:done_update_polling
Unexecuted instantiation: session.c:done_update_polling
Unexecuted instantiation: signal.c:done_update_polling
Unexecuted instantiation: sink.c:done_update_polling
Unexecuted instantiation: sock.c:done_update_polling
Unexecuted instantiation: sock_inet.c:done_update_polling
Unexecuted instantiation: stats-proxy.c:done_update_polling
Unexecuted instantiation: stats.c:done_update_polling
Unexecuted instantiation: stick_table.c:done_update_polling
Unexecuted instantiation: stream.c:done_update_polling
Unexecuted instantiation: task.c:done_update_polling
Unexecuted instantiation: tcp_rules.c:done_update_polling
Unexecuted instantiation: tcpcheck.c:done_update_polling
Unexecuted instantiation: thread.c:done_update_polling
Unexecuted instantiation: tools.c:done_update_polling
Unexecuted instantiation: trace.c:done_update_polling
Unexecuted instantiation: vars.c:done_update_polling
Unexecuted instantiation: action.c:done_update_polling
Unexecuted instantiation: activity.c:done_update_polling
Unexecuted instantiation: applet.c:done_update_polling
Unexecuted instantiation: backend.c:done_update_polling
Unexecuted instantiation: cfgparse-listen.c:done_update_polling
Unexecuted instantiation: cfgparse.c:done_update_polling
Unexecuted instantiation: channel.c:done_update_polling
Unexecuted instantiation: check.c:done_update_polling
Unexecuted instantiation: cli.c:done_update_polling
Unexecuted instantiation: connection.c:done_update_polling
Unexecuted instantiation: debug.c:done_update_polling
Unexecuted instantiation: dgram.c:done_update_polling
Unexecuted instantiation: dns.c:done_update_polling
Unexecuted instantiation: dns_ring.c:done_update_polling
Unexecuted instantiation: errors.c:done_update_polling
Unexecuted instantiation: event_hdl.c:done_update_polling
Unexecuted instantiation: extcheck.c:done_update_polling
Unexecuted instantiation: fd.c:done_update_polling
Unexecuted instantiation: filters.c:done_update_polling
Unexecuted instantiation: flt_decomp.c:done_update_polling
Unexecuted instantiation: flt_http_comp.c:done_update_polling
Unexecuted instantiation: frontend.c:done_update_polling
Unexecuted instantiation: haterm.c:done_update_polling
Unexecuted instantiation: http_ana.c:done_update_polling
Unexecuted instantiation: http_ext.c:done_update_polling
Unexecuted instantiation: http_htx.c:done_update_polling
Unexecuted instantiation: http_rules.c:done_update_polling
Unexecuted instantiation: lb_chash.c:done_update_polling
Unexecuted instantiation: lb_fwlc.c:done_update_polling
Unexecuted instantiation: limits.c:done_update_polling
Unexecuted instantiation: mailers.c:done_update_polling
Unexecuted instantiation: mux_spop.c:done_update_polling
Unexecuted instantiation: pattern.c:done_update_polling
Unexecuted instantiation: payload.c:done_update_polling
Unexecuted instantiation: proto_rhttp.c:done_update_polling
Unexecuted instantiation: queue.c:done_update_polling
Unexecuted instantiation: stats-file.c:done_update_polling
Unexecuted instantiation: stats-html.c:done_update_polling
Unexecuted instantiation: stats-json.c:done_update_polling
Unexecuted instantiation: stconn.c:done_update_polling
Unexecuted instantiation: cache.c:done_update_polling
Unexecuted instantiation: cfgparse-global.c:done_update_polling
Unexecuted instantiation: compression.c:done_update_polling
Unexecuted instantiation: fcgi-app.c:done_update_polling
Unexecuted instantiation: flt_spoe.c:done_update_polling
Unexecuted instantiation: http_fetch.c:done_update_polling
Unexecuted instantiation: proto_tcp.c:done_update_polling
159
160
/*
161
 * returns true if the FD is active for recv
162
 */
163
static inline int fd_recv_active(const int fd)
164
0
{
165
0
  return (unsigned)fdtab[fd].state & FD_EV_ACTIVE_R;
166
0
}
Unexecuted instantiation: haproxy.c:fd_recv_active
Unexecuted instantiation: listener.c:fd_recv_active
Unexecuted instantiation: log.c:fd_recv_active
Unexecuted instantiation: mworker.c:fd_recv_active
Unexecuted instantiation: peers.c:fd_recv_active
Unexecuted instantiation: pool.c:fd_recv_active
Unexecuted instantiation: proto_sockpair.c:fd_recv_active
Unexecuted instantiation: protocol.c:fd_recv_active
Unexecuted instantiation: proxy.c:fd_recv_active
Unexecuted instantiation: resolvers.c:fd_recv_active
Unexecuted instantiation: ring.c:fd_recv_active
Unexecuted instantiation: sample.c:fd_recv_active
Unexecuted instantiation: server.c:fd_recv_active
Unexecuted instantiation: session.c:fd_recv_active
Unexecuted instantiation: signal.c:fd_recv_active
Unexecuted instantiation: sink.c:fd_recv_active
Unexecuted instantiation: sock.c:fd_recv_active
Unexecuted instantiation: sock_inet.c:fd_recv_active
Unexecuted instantiation: stats-proxy.c:fd_recv_active
Unexecuted instantiation: stats.c:fd_recv_active
Unexecuted instantiation: stick_table.c:fd_recv_active
Unexecuted instantiation: stream.c:fd_recv_active
Unexecuted instantiation: task.c:fd_recv_active
Unexecuted instantiation: tcp_rules.c:fd_recv_active
Unexecuted instantiation: tcpcheck.c:fd_recv_active
Unexecuted instantiation: thread.c:fd_recv_active
Unexecuted instantiation: tools.c:fd_recv_active
Unexecuted instantiation: trace.c:fd_recv_active
Unexecuted instantiation: vars.c:fd_recv_active
Unexecuted instantiation: action.c:fd_recv_active
Unexecuted instantiation: activity.c:fd_recv_active
Unexecuted instantiation: applet.c:fd_recv_active
Unexecuted instantiation: backend.c:fd_recv_active
Unexecuted instantiation: cfgparse-listen.c:fd_recv_active
Unexecuted instantiation: cfgparse.c:fd_recv_active
Unexecuted instantiation: channel.c:fd_recv_active
Unexecuted instantiation: check.c:fd_recv_active
Unexecuted instantiation: cli.c:fd_recv_active
Unexecuted instantiation: connection.c:fd_recv_active
Unexecuted instantiation: debug.c:fd_recv_active
Unexecuted instantiation: dgram.c:fd_recv_active
Unexecuted instantiation: dns.c:fd_recv_active
Unexecuted instantiation: dns_ring.c:fd_recv_active
Unexecuted instantiation: errors.c:fd_recv_active
Unexecuted instantiation: event_hdl.c:fd_recv_active
Unexecuted instantiation: extcheck.c:fd_recv_active
Unexecuted instantiation: fd.c:fd_recv_active
Unexecuted instantiation: filters.c:fd_recv_active
Unexecuted instantiation: flt_decomp.c:fd_recv_active
Unexecuted instantiation: flt_http_comp.c:fd_recv_active
Unexecuted instantiation: frontend.c:fd_recv_active
Unexecuted instantiation: haterm.c:fd_recv_active
Unexecuted instantiation: http_ana.c:fd_recv_active
Unexecuted instantiation: http_ext.c:fd_recv_active
Unexecuted instantiation: http_htx.c:fd_recv_active
Unexecuted instantiation: http_rules.c:fd_recv_active
Unexecuted instantiation: lb_chash.c:fd_recv_active
Unexecuted instantiation: lb_fwlc.c:fd_recv_active
Unexecuted instantiation: limits.c:fd_recv_active
Unexecuted instantiation: mailers.c:fd_recv_active
Unexecuted instantiation: mux_spop.c:fd_recv_active
Unexecuted instantiation: pattern.c:fd_recv_active
Unexecuted instantiation: payload.c:fd_recv_active
Unexecuted instantiation: proto_rhttp.c:fd_recv_active
Unexecuted instantiation: queue.c:fd_recv_active
Unexecuted instantiation: stats-file.c:fd_recv_active
Unexecuted instantiation: stats-html.c:fd_recv_active
Unexecuted instantiation: stats-json.c:fd_recv_active
Unexecuted instantiation: stconn.c:fd_recv_active
Unexecuted instantiation: cache.c:fd_recv_active
Unexecuted instantiation: cfgparse-global.c:fd_recv_active
Unexecuted instantiation: compression.c:fd_recv_active
Unexecuted instantiation: fcgi-app.c:fd_recv_active
Unexecuted instantiation: flt_spoe.c:fd_recv_active
Unexecuted instantiation: http_fetch.c:fd_recv_active
Unexecuted instantiation: proto_tcp.c:fd_recv_active
167
168
/*
169
 * returns true if the FD is ready for recv
170
 */
171
static inline int fd_recv_ready(const int fd)
172
0
{
173
0
  return (unsigned)fdtab[fd].state & FD_EV_READY_R;
174
0
}
Unexecuted instantiation: haproxy.c:fd_recv_ready
Unexecuted instantiation: listener.c:fd_recv_ready
Unexecuted instantiation: log.c:fd_recv_ready
Unexecuted instantiation: mworker.c:fd_recv_ready
Unexecuted instantiation: peers.c:fd_recv_ready
Unexecuted instantiation: pool.c:fd_recv_ready
Unexecuted instantiation: proto_sockpair.c:fd_recv_ready
Unexecuted instantiation: protocol.c:fd_recv_ready
Unexecuted instantiation: proxy.c:fd_recv_ready
Unexecuted instantiation: resolvers.c:fd_recv_ready
Unexecuted instantiation: ring.c:fd_recv_ready
Unexecuted instantiation: sample.c:fd_recv_ready
Unexecuted instantiation: server.c:fd_recv_ready
Unexecuted instantiation: session.c:fd_recv_ready
Unexecuted instantiation: signal.c:fd_recv_ready
Unexecuted instantiation: sink.c:fd_recv_ready
Unexecuted instantiation: sock.c:fd_recv_ready
Unexecuted instantiation: sock_inet.c:fd_recv_ready
Unexecuted instantiation: stats-proxy.c:fd_recv_ready
Unexecuted instantiation: stats.c:fd_recv_ready
Unexecuted instantiation: stick_table.c:fd_recv_ready
Unexecuted instantiation: stream.c:fd_recv_ready
Unexecuted instantiation: task.c:fd_recv_ready
Unexecuted instantiation: tcp_rules.c:fd_recv_ready
Unexecuted instantiation: tcpcheck.c:fd_recv_ready
Unexecuted instantiation: thread.c:fd_recv_ready
Unexecuted instantiation: tools.c:fd_recv_ready
Unexecuted instantiation: trace.c:fd_recv_ready
Unexecuted instantiation: vars.c:fd_recv_ready
Unexecuted instantiation: action.c:fd_recv_ready
Unexecuted instantiation: activity.c:fd_recv_ready
Unexecuted instantiation: applet.c:fd_recv_ready
Unexecuted instantiation: backend.c:fd_recv_ready
Unexecuted instantiation: cfgparse-listen.c:fd_recv_ready
Unexecuted instantiation: cfgparse.c:fd_recv_ready
Unexecuted instantiation: channel.c:fd_recv_ready
Unexecuted instantiation: check.c:fd_recv_ready
Unexecuted instantiation: cli.c:fd_recv_ready
Unexecuted instantiation: connection.c:fd_recv_ready
Unexecuted instantiation: debug.c:fd_recv_ready
Unexecuted instantiation: dgram.c:fd_recv_ready
Unexecuted instantiation: dns.c:fd_recv_ready
Unexecuted instantiation: dns_ring.c:fd_recv_ready
Unexecuted instantiation: errors.c:fd_recv_ready
Unexecuted instantiation: event_hdl.c:fd_recv_ready
Unexecuted instantiation: extcheck.c:fd_recv_ready
Unexecuted instantiation: fd.c:fd_recv_ready
Unexecuted instantiation: filters.c:fd_recv_ready
Unexecuted instantiation: flt_decomp.c:fd_recv_ready
Unexecuted instantiation: flt_http_comp.c:fd_recv_ready
Unexecuted instantiation: frontend.c:fd_recv_ready
Unexecuted instantiation: haterm.c:fd_recv_ready
Unexecuted instantiation: http_ana.c:fd_recv_ready
Unexecuted instantiation: http_ext.c:fd_recv_ready
Unexecuted instantiation: http_htx.c:fd_recv_ready
Unexecuted instantiation: http_rules.c:fd_recv_ready
Unexecuted instantiation: lb_chash.c:fd_recv_ready
Unexecuted instantiation: lb_fwlc.c:fd_recv_ready
Unexecuted instantiation: limits.c:fd_recv_ready
Unexecuted instantiation: mailers.c:fd_recv_ready
Unexecuted instantiation: mux_spop.c:fd_recv_ready
Unexecuted instantiation: pattern.c:fd_recv_ready
Unexecuted instantiation: payload.c:fd_recv_ready
Unexecuted instantiation: proto_rhttp.c:fd_recv_ready
Unexecuted instantiation: queue.c:fd_recv_ready
Unexecuted instantiation: stats-file.c:fd_recv_ready
Unexecuted instantiation: stats-html.c:fd_recv_ready
Unexecuted instantiation: stats-json.c:fd_recv_ready
Unexecuted instantiation: stconn.c:fd_recv_ready
Unexecuted instantiation: cache.c:fd_recv_ready
Unexecuted instantiation: cfgparse-global.c:fd_recv_ready
Unexecuted instantiation: compression.c:fd_recv_ready
Unexecuted instantiation: fcgi-app.c:fd_recv_ready
Unexecuted instantiation: flt_spoe.c:fd_recv_ready
Unexecuted instantiation: http_fetch.c:fd_recv_ready
Unexecuted instantiation: proto_tcp.c:fd_recv_ready
175
176
/*
177
 * returns true if the FD is active for send
178
 */
179
static inline int fd_send_active(const int fd)
180
0
{
181
0
  return (unsigned)fdtab[fd].state & FD_EV_ACTIVE_W;
182
0
}
Unexecuted instantiation: haproxy.c:fd_send_active
Unexecuted instantiation: listener.c:fd_send_active
Unexecuted instantiation: log.c:fd_send_active
Unexecuted instantiation: mworker.c:fd_send_active
Unexecuted instantiation: peers.c:fd_send_active
Unexecuted instantiation: pool.c:fd_send_active
Unexecuted instantiation: proto_sockpair.c:fd_send_active
Unexecuted instantiation: protocol.c:fd_send_active
Unexecuted instantiation: proxy.c:fd_send_active
Unexecuted instantiation: resolvers.c:fd_send_active
Unexecuted instantiation: ring.c:fd_send_active
Unexecuted instantiation: sample.c:fd_send_active
Unexecuted instantiation: server.c:fd_send_active
Unexecuted instantiation: session.c:fd_send_active
Unexecuted instantiation: signal.c:fd_send_active
Unexecuted instantiation: sink.c:fd_send_active
Unexecuted instantiation: sock.c:fd_send_active
Unexecuted instantiation: sock_inet.c:fd_send_active
Unexecuted instantiation: stats-proxy.c:fd_send_active
Unexecuted instantiation: stats.c:fd_send_active
Unexecuted instantiation: stick_table.c:fd_send_active
Unexecuted instantiation: stream.c:fd_send_active
Unexecuted instantiation: task.c:fd_send_active
Unexecuted instantiation: tcp_rules.c:fd_send_active
Unexecuted instantiation: tcpcheck.c:fd_send_active
Unexecuted instantiation: thread.c:fd_send_active
Unexecuted instantiation: tools.c:fd_send_active
Unexecuted instantiation: trace.c:fd_send_active
Unexecuted instantiation: vars.c:fd_send_active
Unexecuted instantiation: action.c:fd_send_active
Unexecuted instantiation: activity.c:fd_send_active
Unexecuted instantiation: applet.c:fd_send_active
Unexecuted instantiation: backend.c:fd_send_active
Unexecuted instantiation: cfgparse-listen.c:fd_send_active
Unexecuted instantiation: cfgparse.c:fd_send_active
Unexecuted instantiation: channel.c:fd_send_active
Unexecuted instantiation: check.c:fd_send_active
Unexecuted instantiation: cli.c:fd_send_active
Unexecuted instantiation: connection.c:fd_send_active
Unexecuted instantiation: debug.c:fd_send_active
Unexecuted instantiation: dgram.c:fd_send_active
Unexecuted instantiation: dns.c:fd_send_active
Unexecuted instantiation: dns_ring.c:fd_send_active
Unexecuted instantiation: errors.c:fd_send_active
Unexecuted instantiation: event_hdl.c:fd_send_active
Unexecuted instantiation: extcheck.c:fd_send_active
Unexecuted instantiation: fd.c:fd_send_active
Unexecuted instantiation: filters.c:fd_send_active
Unexecuted instantiation: flt_decomp.c:fd_send_active
Unexecuted instantiation: flt_http_comp.c:fd_send_active
Unexecuted instantiation: frontend.c:fd_send_active
Unexecuted instantiation: haterm.c:fd_send_active
Unexecuted instantiation: http_ana.c:fd_send_active
Unexecuted instantiation: http_ext.c:fd_send_active
Unexecuted instantiation: http_htx.c:fd_send_active
Unexecuted instantiation: http_rules.c:fd_send_active
Unexecuted instantiation: lb_chash.c:fd_send_active
Unexecuted instantiation: lb_fwlc.c:fd_send_active
Unexecuted instantiation: limits.c:fd_send_active
Unexecuted instantiation: mailers.c:fd_send_active
Unexecuted instantiation: mux_spop.c:fd_send_active
Unexecuted instantiation: pattern.c:fd_send_active
Unexecuted instantiation: payload.c:fd_send_active
Unexecuted instantiation: proto_rhttp.c:fd_send_active
Unexecuted instantiation: queue.c:fd_send_active
Unexecuted instantiation: stats-file.c:fd_send_active
Unexecuted instantiation: stats-html.c:fd_send_active
Unexecuted instantiation: stats-json.c:fd_send_active
Unexecuted instantiation: stconn.c:fd_send_active
Unexecuted instantiation: cache.c:fd_send_active
Unexecuted instantiation: cfgparse-global.c:fd_send_active
Unexecuted instantiation: compression.c:fd_send_active
Unexecuted instantiation: fcgi-app.c:fd_send_active
Unexecuted instantiation: flt_spoe.c:fd_send_active
Unexecuted instantiation: http_fetch.c:fd_send_active
Unexecuted instantiation: proto_tcp.c:fd_send_active
183
184
/*
185
 * returns true if the FD is ready for send
186
 */
187
static inline int fd_send_ready(const int fd)
188
0
{
189
0
  return (unsigned)fdtab[fd].state & FD_EV_READY_W;
190
0
}
Unexecuted instantiation: haproxy.c:fd_send_ready
Unexecuted instantiation: listener.c:fd_send_ready
Unexecuted instantiation: log.c:fd_send_ready
Unexecuted instantiation: mworker.c:fd_send_ready
Unexecuted instantiation: peers.c:fd_send_ready
Unexecuted instantiation: pool.c:fd_send_ready
Unexecuted instantiation: proto_sockpair.c:fd_send_ready
Unexecuted instantiation: protocol.c:fd_send_ready
Unexecuted instantiation: proxy.c:fd_send_ready
Unexecuted instantiation: resolvers.c:fd_send_ready
Unexecuted instantiation: ring.c:fd_send_ready
Unexecuted instantiation: sample.c:fd_send_ready
Unexecuted instantiation: server.c:fd_send_ready
Unexecuted instantiation: session.c:fd_send_ready
Unexecuted instantiation: signal.c:fd_send_ready
Unexecuted instantiation: sink.c:fd_send_ready
Unexecuted instantiation: sock.c:fd_send_ready
Unexecuted instantiation: sock_inet.c:fd_send_ready
Unexecuted instantiation: stats-proxy.c:fd_send_ready
Unexecuted instantiation: stats.c:fd_send_ready
Unexecuted instantiation: stick_table.c:fd_send_ready
Unexecuted instantiation: stream.c:fd_send_ready
Unexecuted instantiation: task.c:fd_send_ready
Unexecuted instantiation: tcp_rules.c:fd_send_ready
Unexecuted instantiation: tcpcheck.c:fd_send_ready
Unexecuted instantiation: thread.c:fd_send_ready
Unexecuted instantiation: tools.c:fd_send_ready
Unexecuted instantiation: trace.c:fd_send_ready
Unexecuted instantiation: vars.c:fd_send_ready
Unexecuted instantiation: action.c:fd_send_ready
Unexecuted instantiation: activity.c:fd_send_ready
Unexecuted instantiation: applet.c:fd_send_ready
Unexecuted instantiation: backend.c:fd_send_ready
Unexecuted instantiation: cfgparse-listen.c:fd_send_ready
Unexecuted instantiation: cfgparse.c:fd_send_ready
Unexecuted instantiation: channel.c:fd_send_ready
Unexecuted instantiation: check.c:fd_send_ready
Unexecuted instantiation: cli.c:fd_send_ready
Unexecuted instantiation: connection.c:fd_send_ready
Unexecuted instantiation: debug.c:fd_send_ready
Unexecuted instantiation: dgram.c:fd_send_ready
Unexecuted instantiation: dns.c:fd_send_ready
Unexecuted instantiation: dns_ring.c:fd_send_ready
Unexecuted instantiation: errors.c:fd_send_ready
Unexecuted instantiation: event_hdl.c:fd_send_ready
Unexecuted instantiation: extcheck.c:fd_send_ready
Unexecuted instantiation: fd.c:fd_send_ready
Unexecuted instantiation: filters.c:fd_send_ready
Unexecuted instantiation: flt_decomp.c:fd_send_ready
Unexecuted instantiation: flt_http_comp.c:fd_send_ready
Unexecuted instantiation: frontend.c:fd_send_ready
Unexecuted instantiation: haterm.c:fd_send_ready
Unexecuted instantiation: http_ana.c:fd_send_ready
Unexecuted instantiation: http_ext.c:fd_send_ready
Unexecuted instantiation: http_htx.c:fd_send_ready
Unexecuted instantiation: http_rules.c:fd_send_ready
Unexecuted instantiation: lb_chash.c:fd_send_ready
Unexecuted instantiation: lb_fwlc.c:fd_send_ready
Unexecuted instantiation: limits.c:fd_send_ready
Unexecuted instantiation: mailers.c:fd_send_ready
Unexecuted instantiation: mux_spop.c:fd_send_ready
Unexecuted instantiation: pattern.c:fd_send_ready
Unexecuted instantiation: payload.c:fd_send_ready
Unexecuted instantiation: proto_rhttp.c:fd_send_ready
Unexecuted instantiation: queue.c:fd_send_ready
Unexecuted instantiation: stats-file.c:fd_send_ready
Unexecuted instantiation: stats-html.c:fd_send_ready
Unexecuted instantiation: stats-json.c:fd_send_ready
Unexecuted instantiation: stconn.c:fd_send_ready
Unexecuted instantiation: cache.c:fd_send_ready
Unexecuted instantiation: cfgparse-global.c:fd_send_ready
Unexecuted instantiation: compression.c:fd_send_ready
Unexecuted instantiation: fcgi-app.c:fd_send_ready
Unexecuted instantiation: flt_spoe.c:fd_send_ready
Unexecuted instantiation: http_fetch.c:fd_send_ready
Unexecuted instantiation: proto_tcp.c:fd_send_ready
191
192
/*
193
 * returns true if the FD is active for recv or send
194
 */
195
static inline int fd_active(const int fd)
196
0
{
197
0
  return (unsigned)fdtab[fd].state & FD_EV_ACTIVE_RW;
198
0
}
Unexecuted instantiation: haproxy.c:fd_active
Unexecuted instantiation: listener.c:fd_active
Unexecuted instantiation: log.c:fd_active
Unexecuted instantiation: mworker.c:fd_active
Unexecuted instantiation: peers.c:fd_active
Unexecuted instantiation: pool.c:fd_active
Unexecuted instantiation: proto_sockpair.c:fd_active
Unexecuted instantiation: protocol.c:fd_active
Unexecuted instantiation: proxy.c:fd_active
Unexecuted instantiation: resolvers.c:fd_active
Unexecuted instantiation: ring.c:fd_active
Unexecuted instantiation: sample.c:fd_active
Unexecuted instantiation: server.c:fd_active
Unexecuted instantiation: session.c:fd_active
Unexecuted instantiation: signal.c:fd_active
Unexecuted instantiation: sink.c:fd_active
Unexecuted instantiation: sock.c:fd_active
Unexecuted instantiation: sock_inet.c:fd_active
Unexecuted instantiation: stats-proxy.c:fd_active
Unexecuted instantiation: stats.c:fd_active
Unexecuted instantiation: stick_table.c:fd_active
Unexecuted instantiation: stream.c:fd_active
Unexecuted instantiation: task.c:fd_active
Unexecuted instantiation: tcp_rules.c:fd_active
Unexecuted instantiation: tcpcheck.c:fd_active
Unexecuted instantiation: thread.c:fd_active
Unexecuted instantiation: tools.c:fd_active
Unexecuted instantiation: trace.c:fd_active
Unexecuted instantiation: vars.c:fd_active
Unexecuted instantiation: action.c:fd_active
Unexecuted instantiation: activity.c:fd_active
Unexecuted instantiation: applet.c:fd_active
Unexecuted instantiation: backend.c:fd_active
Unexecuted instantiation: cfgparse-listen.c:fd_active
Unexecuted instantiation: cfgparse.c:fd_active
Unexecuted instantiation: channel.c:fd_active
Unexecuted instantiation: check.c:fd_active
Unexecuted instantiation: cli.c:fd_active
Unexecuted instantiation: connection.c:fd_active
Unexecuted instantiation: debug.c:fd_active
Unexecuted instantiation: dgram.c:fd_active
Unexecuted instantiation: dns.c:fd_active
Unexecuted instantiation: dns_ring.c:fd_active
Unexecuted instantiation: errors.c:fd_active
Unexecuted instantiation: event_hdl.c:fd_active
Unexecuted instantiation: extcheck.c:fd_active
Unexecuted instantiation: fd.c:fd_active
Unexecuted instantiation: filters.c:fd_active
Unexecuted instantiation: flt_decomp.c:fd_active
Unexecuted instantiation: flt_http_comp.c:fd_active
Unexecuted instantiation: frontend.c:fd_active
Unexecuted instantiation: haterm.c:fd_active
Unexecuted instantiation: http_ana.c:fd_active
Unexecuted instantiation: http_ext.c:fd_active
Unexecuted instantiation: http_htx.c:fd_active
Unexecuted instantiation: http_rules.c:fd_active
Unexecuted instantiation: lb_chash.c:fd_active
Unexecuted instantiation: lb_fwlc.c:fd_active
Unexecuted instantiation: limits.c:fd_active
Unexecuted instantiation: mailers.c:fd_active
Unexecuted instantiation: mux_spop.c:fd_active
Unexecuted instantiation: pattern.c:fd_active
Unexecuted instantiation: payload.c:fd_active
Unexecuted instantiation: proto_rhttp.c:fd_active
Unexecuted instantiation: queue.c:fd_active
Unexecuted instantiation: stats-file.c:fd_active
Unexecuted instantiation: stats-html.c:fd_active
Unexecuted instantiation: stats-json.c:fd_active
Unexecuted instantiation: stconn.c:fd_active
Unexecuted instantiation: cache.c:fd_active
Unexecuted instantiation: cfgparse-global.c:fd_active
Unexecuted instantiation: compression.c:fd_active
Unexecuted instantiation: fcgi-app.c:fd_active
Unexecuted instantiation: flt_spoe.c:fd_active
Unexecuted instantiation: http_fetch.c:fd_active
Unexecuted instantiation: proto_tcp.c:fd_active
199
200
/* Disable processing recv events on fd <fd> */
201
static inline void fd_stop_recv(int fd)
202
0
{
203
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
204
0
  if (!(fdtab[fd].state & FD_EV_ACTIVE_R) ||
205
0
      !HA_ATOMIC_BTR(&fdtab[fd].state, FD_EV_ACTIVE_R_BIT))
206
0
    return;
207
0
}
Unexecuted instantiation: haproxy.c:fd_stop_recv
Unexecuted instantiation: listener.c:fd_stop_recv
Unexecuted instantiation: log.c:fd_stop_recv
Unexecuted instantiation: mworker.c:fd_stop_recv
Unexecuted instantiation: peers.c:fd_stop_recv
Unexecuted instantiation: pool.c:fd_stop_recv
Unexecuted instantiation: proto_sockpair.c:fd_stop_recv
Unexecuted instantiation: protocol.c:fd_stop_recv
Unexecuted instantiation: proxy.c:fd_stop_recv
Unexecuted instantiation: resolvers.c:fd_stop_recv
Unexecuted instantiation: ring.c:fd_stop_recv
Unexecuted instantiation: sample.c:fd_stop_recv
Unexecuted instantiation: server.c:fd_stop_recv
Unexecuted instantiation: session.c:fd_stop_recv
Unexecuted instantiation: signal.c:fd_stop_recv
Unexecuted instantiation: sink.c:fd_stop_recv
Unexecuted instantiation: sock.c:fd_stop_recv
Unexecuted instantiation: sock_inet.c:fd_stop_recv
Unexecuted instantiation: stats-proxy.c:fd_stop_recv
Unexecuted instantiation: stats.c:fd_stop_recv
Unexecuted instantiation: stick_table.c:fd_stop_recv
Unexecuted instantiation: stream.c:fd_stop_recv
Unexecuted instantiation: task.c:fd_stop_recv
Unexecuted instantiation: tcp_rules.c:fd_stop_recv
Unexecuted instantiation: tcpcheck.c:fd_stop_recv
Unexecuted instantiation: thread.c:fd_stop_recv
Unexecuted instantiation: tools.c:fd_stop_recv
Unexecuted instantiation: trace.c:fd_stop_recv
Unexecuted instantiation: vars.c:fd_stop_recv
Unexecuted instantiation: action.c:fd_stop_recv
Unexecuted instantiation: activity.c:fd_stop_recv
Unexecuted instantiation: applet.c:fd_stop_recv
Unexecuted instantiation: backend.c:fd_stop_recv
Unexecuted instantiation: cfgparse-listen.c:fd_stop_recv
Unexecuted instantiation: cfgparse.c:fd_stop_recv
Unexecuted instantiation: channel.c:fd_stop_recv
Unexecuted instantiation: check.c:fd_stop_recv
Unexecuted instantiation: cli.c:fd_stop_recv
Unexecuted instantiation: connection.c:fd_stop_recv
Unexecuted instantiation: debug.c:fd_stop_recv
Unexecuted instantiation: dgram.c:fd_stop_recv
Unexecuted instantiation: dns.c:fd_stop_recv
Unexecuted instantiation: dns_ring.c:fd_stop_recv
Unexecuted instantiation: errors.c:fd_stop_recv
Unexecuted instantiation: event_hdl.c:fd_stop_recv
Unexecuted instantiation: extcheck.c:fd_stop_recv
Unexecuted instantiation: fd.c:fd_stop_recv
Unexecuted instantiation: filters.c:fd_stop_recv
Unexecuted instantiation: flt_decomp.c:fd_stop_recv
Unexecuted instantiation: flt_http_comp.c:fd_stop_recv
Unexecuted instantiation: frontend.c:fd_stop_recv
Unexecuted instantiation: haterm.c:fd_stop_recv
Unexecuted instantiation: http_ana.c:fd_stop_recv
Unexecuted instantiation: http_ext.c:fd_stop_recv
Unexecuted instantiation: http_htx.c:fd_stop_recv
Unexecuted instantiation: http_rules.c:fd_stop_recv
Unexecuted instantiation: lb_chash.c:fd_stop_recv
Unexecuted instantiation: lb_fwlc.c:fd_stop_recv
Unexecuted instantiation: limits.c:fd_stop_recv
Unexecuted instantiation: mailers.c:fd_stop_recv
Unexecuted instantiation: mux_spop.c:fd_stop_recv
Unexecuted instantiation: pattern.c:fd_stop_recv
Unexecuted instantiation: payload.c:fd_stop_recv
Unexecuted instantiation: proto_rhttp.c:fd_stop_recv
Unexecuted instantiation: queue.c:fd_stop_recv
Unexecuted instantiation: stats-file.c:fd_stop_recv
Unexecuted instantiation: stats-html.c:fd_stop_recv
Unexecuted instantiation: stats-json.c:fd_stop_recv
Unexecuted instantiation: stconn.c:fd_stop_recv
Unexecuted instantiation: cache.c:fd_stop_recv
Unexecuted instantiation: cfgparse-global.c:fd_stop_recv
Unexecuted instantiation: compression.c:fd_stop_recv
Unexecuted instantiation: fcgi-app.c:fd_stop_recv
Unexecuted instantiation: flt_spoe.c:fd_stop_recv
Unexecuted instantiation: http_fetch.c:fd_stop_recv
Unexecuted instantiation: proto_tcp.c:fd_stop_recv
208
209
/* Disable processing send events on fd <fd> */
210
static inline void fd_stop_send(int fd)
211
0
{
212
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
213
0
  if (!(fdtab[fd].state & FD_EV_ACTIVE_W) ||
214
0
      !HA_ATOMIC_BTR(&fdtab[fd].state, FD_EV_ACTIVE_W_BIT))
215
0
    return;
216
0
}
Unexecuted instantiation: haproxy.c:fd_stop_send
Unexecuted instantiation: listener.c:fd_stop_send
Unexecuted instantiation: log.c:fd_stop_send
Unexecuted instantiation: mworker.c:fd_stop_send
Unexecuted instantiation: peers.c:fd_stop_send
Unexecuted instantiation: pool.c:fd_stop_send
Unexecuted instantiation: proto_sockpair.c:fd_stop_send
Unexecuted instantiation: protocol.c:fd_stop_send
Unexecuted instantiation: proxy.c:fd_stop_send
Unexecuted instantiation: resolvers.c:fd_stop_send
Unexecuted instantiation: ring.c:fd_stop_send
Unexecuted instantiation: sample.c:fd_stop_send
Unexecuted instantiation: server.c:fd_stop_send
Unexecuted instantiation: session.c:fd_stop_send
Unexecuted instantiation: signal.c:fd_stop_send
Unexecuted instantiation: sink.c:fd_stop_send
Unexecuted instantiation: sock.c:fd_stop_send
Unexecuted instantiation: sock_inet.c:fd_stop_send
Unexecuted instantiation: stats-proxy.c:fd_stop_send
Unexecuted instantiation: stats.c:fd_stop_send
Unexecuted instantiation: stick_table.c:fd_stop_send
Unexecuted instantiation: stream.c:fd_stop_send
Unexecuted instantiation: task.c:fd_stop_send
Unexecuted instantiation: tcp_rules.c:fd_stop_send
Unexecuted instantiation: tcpcheck.c:fd_stop_send
Unexecuted instantiation: thread.c:fd_stop_send
Unexecuted instantiation: tools.c:fd_stop_send
Unexecuted instantiation: trace.c:fd_stop_send
Unexecuted instantiation: vars.c:fd_stop_send
Unexecuted instantiation: action.c:fd_stop_send
Unexecuted instantiation: activity.c:fd_stop_send
Unexecuted instantiation: applet.c:fd_stop_send
Unexecuted instantiation: backend.c:fd_stop_send
Unexecuted instantiation: cfgparse-listen.c:fd_stop_send
Unexecuted instantiation: cfgparse.c:fd_stop_send
Unexecuted instantiation: channel.c:fd_stop_send
Unexecuted instantiation: check.c:fd_stop_send
Unexecuted instantiation: cli.c:fd_stop_send
Unexecuted instantiation: connection.c:fd_stop_send
Unexecuted instantiation: debug.c:fd_stop_send
Unexecuted instantiation: dgram.c:fd_stop_send
Unexecuted instantiation: dns.c:fd_stop_send
Unexecuted instantiation: dns_ring.c:fd_stop_send
Unexecuted instantiation: errors.c:fd_stop_send
Unexecuted instantiation: event_hdl.c:fd_stop_send
Unexecuted instantiation: extcheck.c:fd_stop_send
Unexecuted instantiation: fd.c:fd_stop_send
Unexecuted instantiation: filters.c:fd_stop_send
Unexecuted instantiation: flt_decomp.c:fd_stop_send
Unexecuted instantiation: flt_http_comp.c:fd_stop_send
Unexecuted instantiation: frontend.c:fd_stop_send
Unexecuted instantiation: haterm.c:fd_stop_send
Unexecuted instantiation: http_ana.c:fd_stop_send
Unexecuted instantiation: http_ext.c:fd_stop_send
Unexecuted instantiation: http_htx.c:fd_stop_send
Unexecuted instantiation: http_rules.c:fd_stop_send
Unexecuted instantiation: lb_chash.c:fd_stop_send
Unexecuted instantiation: lb_fwlc.c:fd_stop_send
Unexecuted instantiation: limits.c:fd_stop_send
Unexecuted instantiation: mailers.c:fd_stop_send
Unexecuted instantiation: mux_spop.c:fd_stop_send
Unexecuted instantiation: pattern.c:fd_stop_send
Unexecuted instantiation: payload.c:fd_stop_send
Unexecuted instantiation: proto_rhttp.c:fd_stop_send
Unexecuted instantiation: queue.c:fd_stop_send
Unexecuted instantiation: stats-file.c:fd_stop_send
Unexecuted instantiation: stats-html.c:fd_stop_send
Unexecuted instantiation: stats-json.c:fd_stop_send
Unexecuted instantiation: stconn.c:fd_stop_send
Unexecuted instantiation: cache.c:fd_stop_send
Unexecuted instantiation: cfgparse-global.c:fd_stop_send
Unexecuted instantiation: compression.c:fd_stop_send
Unexecuted instantiation: fcgi-app.c:fd_stop_send
Unexecuted instantiation: flt_spoe.c:fd_stop_send
Unexecuted instantiation: http_fetch.c:fd_stop_send
Unexecuted instantiation: proto_tcp.c:fd_stop_send
217
218
/* Disable processing of events on fd <fd> for both directions. */
219
static inline void fd_stop_both(int fd)
220
0
{
221
0
  uint old, new;
222
223
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
224
0
  old = fdtab[fd].state;
225
0
  do {
226
0
    if (!(old & FD_EV_ACTIVE_RW))
227
0
      return;
228
0
    new = old & ~FD_EV_ACTIVE_RW;
229
0
  } while (unlikely(!_HA_ATOMIC_CAS(&fdtab[fd].state, &old, new)));
230
0
}
Unexecuted instantiation: haproxy.c:fd_stop_both
Unexecuted instantiation: listener.c:fd_stop_both
Unexecuted instantiation: log.c:fd_stop_both
Unexecuted instantiation: mworker.c:fd_stop_both
Unexecuted instantiation: peers.c:fd_stop_both
Unexecuted instantiation: pool.c:fd_stop_both
Unexecuted instantiation: proto_sockpair.c:fd_stop_both
Unexecuted instantiation: protocol.c:fd_stop_both
Unexecuted instantiation: proxy.c:fd_stop_both
Unexecuted instantiation: resolvers.c:fd_stop_both
Unexecuted instantiation: ring.c:fd_stop_both
Unexecuted instantiation: sample.c:fd_stop_both
Unexecuted instantiation: server.c:fd_stop_both
Unexecuted instantiation: session.c:fd_stop_both
Unexecuted instantiation: signal.c:fd_stop_both
Unexecuted instantiation: sink.c:fd_stop_both
Unexecuted instantiation: sock.c:fd_stop_both
Unexecuted instantiation: sock_inet.c:fd_stop_both
Unexecuted instantiation: stats-proxy.c:fd_stop_both
Unexecuted instantiation: stats.c:fd_stop_both
Unexecuted instantiation: stick_table.c:fd_stop_both
Unexecuted instantiation: stream.c:fd_stop_both
Unexecuted instantiation: task.c:fd_stop_both
Unexecuted instantiation: tcp_rules.c:fd_stop_both
Unexecuted instantiation: tcpcheck.c:fd_stop_both
Unexecuted instantiation: thread.c:fd_stop_both
Unexecuted instantiation: tools.c:fd_stop_both
Unexecuted instantiation: trace.c:fd_stop_both
Unexecuted instantiation: vars.c:fd_stop_both
Unexecuted instantiation: action.c:fd_stop_both
Unexecuted instantiation: activity.c:fd_stop_both
Unexecuted instantiation: applet.c:fd_stop_both
Unexecuted instantiation: backend.c:fd_stop_both
Unexecuted instantiation: cfgparse-listen.c:fd_stop_both
Unexecuted instantiation: cfgparse.c:fd_stop_both
Unexecuted instantiation: channel.c:fd_stop_both
Unexecuted instantiation: check.c:fd_stop_both
Unexecuted instantiation: cli.c:fd_stop_both
Unexecuted instantiation: connection.c:fd_stop_both
Unexecuted instantiation: debug.c:fd_stop_both
Unexecuted instantiation: dgram.c:fd_stop_both
Unexecuted instantiation: dns.c:fd_stop_both
Unexecuted instantiation: dns_ring.c:fd_stop_both
Unexecuted instantiation: errors.c:fd_stop_both
Unexecuted instantiation: event_hdl.c:fd_stop_both
Unexecuted instantiation: extcheck.c:fd_stop_both
Unexecuted instantiation: fd.c:fd_stop_both
Unexecuted instantiation: filters.c:fd_stop_both
Unexecuted instantiation: flt_decomp.c:fd_stop_both
Unexecuted instantiation: flt_http_comp.c:fd_stop_both
Unexecuted instantiation: frontend.c:fd_stop_both
Unexecuted instantiation: haterm.c:fd_stop_both
Unexecuted instantiation: http_ana.c:fd_stop_both
Unexecuted instantiation: http_ext.c:fd_stop_both
Unexecuted instantiation: http_htx.c:fd_stop_both
Unexecuted instantiation: http_rules.c:fd_stop_both
Unexecuted instantiation: lb_chash.c:fd_stop_both
Unexecuted instantiation: lb_fwlc.c:fd_stop_both
Unexecuted instantiation: limits.c:fd_stop_both
Unexecuted instantiation: mailers.c:fd_stop_both
Unexecuted instantiation: mux_spop.c:fd_stop_both
Unexecuted instantiation: pattern.c:fd_stop_both
Unexecuted instantiation: payload.c:fd_stop_both
Unexecuted instantiation: proto_rhttp.c:fd_stop_both
Unexecuted instantiation: queue.c:fd_stop_both
Unexecuted instantiation: stats-file.c:fd_stop_both
Unexecuted instantiation: stats-html.c:fd_stop_both
Unexecuted instantiation: stats-json.c:fd_stop_both
Unexecuted instantiation: stconn.c:fd_stop_both
Unexecuted instantiation: cache.c:fd_stop_both
Unexecuted instantiation: cfgparse-global.c:fd_stop_both
Unexecuted instantiation: compression.c:fd_stop_both
Unexecuted instantiation: fcgi-app.c:fd_stop_both
Unexecuted instantiation: flt_spoe.c:fd_stop_both
Unexecuted instantiation: http_fetch.c:fd_stop_both
Unexecuted instantiation: proto_tcp.c:fd_stop_both
231
232
/* Report that FD <fd> cannot receive anymore without polling (EAGAIN detected). */
233
static inline void fd_cant_recv(const int fd)
234
0
{
235
  /* marking ready never changes polled status */
236
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
237
0
  if (!(fdtab[fd].state & FD_EV_READY_R) ||
238
0
      !HA_ATOMIC_BTR(&fdtab[fd].state, FD_EV_READY_R_BIT))
239
0
    return;
240
0
}
Unexecuted instantiation: haproxy.c:fd_cant_recv
Unexecuted instantiation: listener.c:fd_cant_recv
Unexecuted instantiation: log.c:fd_cant_recv
Unexecuted instantiation: mworker.c:fd_cant_recv
Unexecuted instantiation: peers.c:fd_cant_recv
Unexecuted instantiation: pool.c:fd_cant_recv
Unexecuted instantiation: proto_sockpair.c:fd_cant_recv
Unexecuted instantiation: protocol.c:fd_cant_recv
Unexecuted instantiation: proxy.c:fd_cant_recv
Unexecuted instantiation: resolvers.c:fd_cant_recv
Unexecuted instantiation: ring.c:fd_cant_recv
Unexecuted instantiation: sample.c:fd_cant_recv
Unexecuted instantiation: server.c:fd_cant_recv
Unexecuted instantiation: session.c:fd_cant_recv
Unexecuted instantiation: signal.c:fd_cant_recv
Unexecuted instantiation: sink.c:fd_cant_recv
Unexecuted instantiation: sock.c:fd_cant_recv
Unexecuted instantiation: sock_inet.c:fd_cant_recv
Unexecuted instantiation: stats-proxy.c:fd_cant_recv
Unexecuted instantiation: stats.c:fd_cant_recv
Unexecuted instantiation: stick_table.c:fd_cant_recv
Unexecuted instantiation: stream.c:fd_cant_recv
Unexecuted instantiation: task.c:fd_cant_recv
Unexecuted instantiation: tcp_rules.c:fd_cant_recv
Unexecuted instantiation: tcpcheck.c:fd_cant_recv
Unexecuted instantiation: thread.c:fd_cant_recv
Unexecuted instantiation: tools.c:fd_cant_recv
Unexecuted instantiation: trace.c:fd_cant_recv
Unexecuted instantiation: vars.c:fd_cant_recv
Unexecuted instantiation: action.c:fd_cant_recv
Unexecuted instantiation: activity.c:fd_cant_recv
Unexecuted instantiation: applet.c:fd_cant_recv
Unexecuted instantiation: backend.c:fd_cant_recv
Unexecuted instantiation: cfgparse-listen.c:fd_cant_recv
Unexecuted instantiation: cfgparse.c:fd_cant_recv
Unexecuted instantiation: channel.c:fd_cant_recv
Unexecuted instantiation: check.c:fd_cant_recv
Unexecuted instantiation: cli.c:fd_cant_recv
Unexecuted instantiation: connection.c:fd_cant_recv
Unexecuted instantiation: debug.c:fd_cant_recv
Unexecuted instantiation: dgram.c:fd_cant_recv
Unexecuted instantiation: dns.c:fd_cant_recv
Unexecuted instantiation: dns_ring.c:fd_cant_recv
Unexecuted instantiation: errors.c:fd_cant_recv
Unexecuted instantiation: event_hdl.c:fd_cant_recv
Unexecuted instantiation: extcheck.c:fd_cant_recv
Unexecuted instantiation: fd.c:fd_cant_recv
Unexecuted instantiation: filters.c:fd_cant_recv
Unexecuted instantiation: flt_decomp.c:fd_cant_recv
Unexecuted instantiation: flt_http_comp.c:fd_cant_recv
Unexecuted instantiation: frontend.c:fd_cant_recv
Unexecuted instantiation: haterm.c:fd_cant_recv
Unexecuted instantiation: http_ana.c:fd_cant_recv
Unexecuted instantiation: http_ext.c:fd_cant_recv
Unexecuted instantiation: http_htx.c:fd_cant_recv
Unexecuted instantiation: http_rules.c:fd_cant_recv
Unexecuted instantiation: lb_chash.c:fd_cant_recv
Unexecuted instantiation: lb_fwlc.c:fd_cant_recv
Unexecuted instantiation: limits.c:fd_cant_recv
Unexecuted instantiation: mailers.c:fd_cant_recv
Unexecuted instantiation: mux_spop.c:fd_cant_recv
Unexecuted instantiation: pattern.c:fd_cant_recv
Unexecuted instantiation: payload.c:fd_cant_recv
Unexecuted instantiation: proto_rhttp.c:fd_cant_recv
Unexecuted instantiation: queue.c:fd_cant_recv
Unexecuted instantiation: stats-file.c:fd_cant_recv
Unexecuted instantiation: stats-html.c:fd_cant_recv
Unexecuted instantiation: stats-json.c:fd_cant_recv
Unexecuted instantiation: stconn.c:fd_cant_recv
Unexecuted instantiation: cache.c:fd_cant_recv
Unexecuted instantiation: cfgparse-global.c:fd_cant_recv
Unexecuted instantiation: compression.c:fd_cant_recv
Unexecuted instantiation: fcgi-app.c:fd_cant_recv
Unexecuted instantiation: flt_spoe.c:fd_cant_recv
Unexecuted instantiation: http_fetch.c:fd_cant_recv
Unexecuted instantiation: proto_tcp.c:fd_cant_recv
241
242
/* Report that FD <fd> may receive again without polling. */
243
static inline void fd_may_recv(const int fd)
244
0
{
245
0
  /* marking ready never changes polled status */
246
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
247
0
  if ((fdtab[fd].state & FD_EV_READY_R) ||
248
0
      HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_R_BIT))
249
0
    return;
250
0
}
Unexecuted instantiation: haproxy.c:fd_may_recv
Unexecuted instantiation: listener.c:fd_may_recv
Unexecuted instantiation: log.c:fd_may_recv
Unexecuted instantiation: mworker.c:fd_may_recv
Unexecuted instantiation: peers.c:fd_may_recv
Unexecuted instantiation: pool.c:fd_may_recv
Unexecuted instantiation: proto_sockpair.c:fd_may_recv
Unexecuted instantiation: protocol.c:fd_may_recv
Unexecuted instantiation: proxy.c:fd_may_recv
Unexecuted instantiation: resolvers.c:fd_may_recv
Unexecuted instantiation: ring.c:fd_may_recv
Unexecuted instantiation: sample.c:fd_may_recv
Unexecuted instantiation: server.c:fd_may_recv
Unexecuted instantiation: session.c:fd_may_recv
Unexecuted instantiation: signal.c:fd_may_recv
Unexecuted instantiation: sink.c:fd_may_recv
Unexecuted instantiation: sock.c:fd_may_recv
Unexecuted instantiation: sock_inet.c:fd_may_recv
Unexecuted instantiation: stats-proxy.c:fd_may_recv
Unexecuted instantiation: stats.c:fd_may_recv
Unexecuted instantiation: stick_table.c:fd_may_recv
Unexecuted instantiation: stream.c:fd_may_recv
Unexecuted instantiation: task.c:fd_may_recv
Unexecuted instantiation: tcp_rules.c:fd_may_recv
Unexecuted instantiation: tcpcheck.c:fd_may_recv
Unexecuted instantiation: thread.c:fd_may_recv
Unexecuted instantiation: tools.c:fd_may_recv
Unexecuted instantiation: trace.c:fd_may_recv
Unexecuted instantiation: vars.c:fd_may_recv
Unexecuted instantiation: action.c:fd_may_recv
Unexecuted instantiation: activity.c:fd_may_recv
Unexecuted instantiation: applet.c:fd_may_recv
Unexecuted instantiation: backend.c:fd_may_recv
Unexecuted instantiation: cfgparse-listen.c:fd_may_recv
Unexecuted instantiation: cfgparse.c:fd_may_recv
Unexecuted instantiation: channel.c:fd_may_recv
Unexecuted instantiation: check.c:fd_may_recv
Unexecuted instantiation: cli.c:fd_may_recv
Unexecuted instantiation: connection.c:fd_may_recv
Unexecuted instantiation: debug.c:fd_may_recv
Unexecuted instantiation: dgram.c:fd_may_recv
Unexecuted instantiation: dns.c:fd_may_recv
Unexecuted instantiation: dns_ring.c:fd_may_recv
Unexecuted instantiation: errors.c:fd_may_recv
Unexecuted instantiation: event_hdl.c:fd_may_recv
Unexecuted instantiation: extcheck.c:fd_may_recv
Unexecuted instantiation: fd.c:fd_may_recv
Unexecuted instantiation: filters.c:fd_may_recv
Unexecuted instantiation: flt_decomp.c:fd_may_recv
Unexecuted instantiation: flt_http_comp.c:fd_may_recv
Unexecuted instantiation: frontend.c:fd_may_recv
Unexecuted instantiation: haterm.c:fd_may_recv
Unexecuted instantiation: http_ana.c:fd_may_recv
Unexecuted instantiation: http_ext.c:fd_may_recv
Unexecuted instantiation: http_htx.c:fd_may_recv
Unexecuted instantiation: http_rules.c:fd_may_recv
Unexecuted instantiation: lb_chash.c:fd_may_recv
Unexecuted instantiation: lb_fwlc.c:fd_may_recv
Unexecuted instantiation: limits.c:fd_may_recv
Unexecuted instantiation: mailers.c:fd_may_recv
Unexecuted instantiation: mux_spop.c:fd_may_recv
Unexecuted instantiation: pattern.c:fd_may_recv
Unexecuted instantiation: payload.c:fd_may_recv
Unexecuted instantiation: proto_rhttp.c:fd_may_recv
Unexecuted instantiation: queue.c:fd_may_recv
Unexecuted instantiation: stats-file.c:fd_may_recv
Unexecuted instantiation: stats-html.c:fd_may_recv
Unexecuted instantiation: stats-json.c:fd_may_recv
Unexecuted instantiation: stconn.c:fd_may_recv
Unexecuted instantiation: cache.c:fd_may_recv
Unexecuted instantiation: cfgparse-global.c:fd_may_recv
Unexecuted instantiation: compression.c:fd_may_recv
Unexecuted instantiation: fcgi-app.c:fd_may_recv
Unexecuted instantiation: flt_spoe.c:fd_may_recv
Unexecuted instantiation: http_fetch.c:fd_may_recv
Unexecuted instantiation: proto_tcp.c:fd_may_recv
251
252
/* Report that FD <fd> may receive again without polling but only if its not
253
 * active yet. This is in order to speculatively try to enable I/Os when it's
254
 * highly likely that these will succeed, but without interfering with polling.
255
 */
256
static inline void fd_cond_recv(const int fd)
257
0
{
258
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
259
0
  if ((fdtab[fd].state & (FD_EV_ACTIVE_R|FD_EV_READY_R)) == 0)
260
0
    HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_R_BIT);
261
0
}
Unexecuted instantiation: haproxy.c:fd_cond_recv
Unexecuted instantiation: listener.c:fd_cond_recv
Unexecuted instantiation: log.c:fd_cond_recv
Unexecuted instantiation: mworker.c:fd_cond_recv
Unexecuted instantiation: peers.c:fd_cond_recv
Unexecuted instantiation: pool.c:fd_cond_recv
Unexecuted instantiation: proto_sockpair.c:fd_cond_recv
Unexecuted instantiation: protocol.c:fd_cond_recv
Unexecuted instantiation: proxy.c:fd_cond_recv
Unexecuted instantiation: resolvers.c:fd_cond_recv
Unexecuted instantiation: ring.c:fd_cond_recv
Unexecuted instantiation: sample.c:fd_cond_recv
Unexecuted instantiation: server.c:fd_cond_recv
Unexecuted instantiation: session.c:fd_cond_recv
Unexecuted instantiation: signal.c:fd_cond_recv
Unexecuted instantiation: sink.c:fd_cond_recv
Unexecuted instantiation: sock.c:fd_cond_recv
Unexecuted instantiation: sock_inet.c:fd_cond_recv
Unexecuted instantiation: stats-proxy.c:fd_cond_recv
Unexecuted instantiation: stats.c:fd_cond_recv
Unexecuted instantiation: stick_table.c:fd_cond_recv
Unexecuted instantiation: stream.c:fd_cond_recv
Unexecuted instantiation: task.c:fd_cond_recv
Unexecuted instantiation: tcp_rules.c:fd_cond_recv
Unexecuted instantiation: tcpcheck.c:fd_cond_recv
Unexecuted instantiation: thread.c:fd_cond_recv
Unexecuted instantiation: tools.c:fd_cond_recv
Unexecuted instantiation: trace.c:fd_cond_recv
Unexecuted instantiation: vars.c:fd_cond_recv
Unexecuted instantiation: action.c:fd_cond_recv
Unexecuted instantiation: activity.c:fd_cond_recv
Unexecuted instantiation: applet.c:fd_cond_recv
Unexecuted instantiation: backend.c:fd_cond_recv
Unexecuted instantiation: cfgparse-listen.c:fd_cond_recv
Unexecuted instantiation: cfgparse.c:fd_cond_recv
Unexecuted instantiation: channel.c:fd_cond_recv
Unexecuted instantiation: check.c:fd_cond_recv
Unexecuted instantiation: cli.c:fd_cond_recv
Unexecuted instantiation: connection.c:fd_cond_recv
Unexecuted instantiation: debug.c:fd_cond_recv
Unexecuted instantiation: dgram.c:fd_cond_recv
Unexecuted instantiation: dns.c:fd_cond_recv
Unexecuted instantiation: dns_ring.c:fd_cond_recv
Unexecuted instantiation: errors.c:fd_cond_recv
Unexecuted instantiation: event_hdl.c:fd_cond_recv
Unexecuted instantiation: extcheck.c:fd_cond_recv
Unexecuted instantiation: fd.c:fd_cond_recv
Unexecuted instantiation: filters.c:fd_cond_recv
Unexecuted instantiation: flt_decomp.c:fd_cond_recv
Unexecuted instantiation: flt_http_comp.c:fd_cond_recv
Unexecuted instantiation: frontend.c:fd_cond_recv
Unexecuted instantiation: haterm.c:fd_cond_recv
Unexecuted instantiation: http_ana.c:fd_cond_recv
Unexecuted instantiation: http_ext.c:fd_cond_recv
Unexecuted instantiation: http_htx.c:fd_cond_recv
Unexecuted instantiation: http_rules.c:fd_cond_recv
Unexecuted instantiation: lb_chash.c:fd_cond_recv
Unexecuted instantiation: lb_fwlc.c:fd_cond_recv
Unexecuted instantiation: limits.c:fd_cond_recv
Unexecuted instantiation: mailers.c:fd_cond_recv
Unexecuted instantiation: mux_spop.c:fd_cond_recv
Unexecuted instantiation: pattern.c:fd_cond_recv
Unexecuted instantiation: payload.c:fd_cond_recv
Unexecuted instantiation: proto_rhttp.c:fd_cond_recv
Unexecuted instantiation: queue.c:fd_cond_recv
Unexecuted instantiation: stats-file.c:fd_cond_recv
Unexecuted instantiation: stats-html.c:fd_cond_recv
Unexecuted instantiation: stats-json.c:fd_cond_recv
Unexecuted instantiation: stconn.c:fd_cond_recv
Unexecuted instantiation: cache.c:fd_cond_recv
Unexecuted instantiation: cfgparse-global.c:fd_cond_recv
Unexecuted instantiation: compression.c:fd_cond_recv
Unexecuted instantiation: fcgi-app.c:fd_cond_recv
Unexecuted instantiation: flt_spoe.c:fd_cond_recv
Unexecuted instantiation: http_fetch.c:fd_cond_recv
Unexecuted instantiation: proto_tcp.c:fd_cond_recv
262
263
/* Report that FD <fd> may send again without polling but only if its not
264
 * active yet. This is in order to speculatively try to enable I/Os when it's
265
 * highly likely that these will succeed, but without interfering with polling.
266
 */
267
static inline void fd_cond_send(const int fd)
268
0
{
269
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
270
0
  if ((fdtab[fd].state & (FD_EV_ACTIVE_W|FD_EV_READY_W)) == 0)
271
0
    HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_W_BIT);
272
0
}
Unexecuted instantiation: haproxy.c:fd_cond_send
Unexecuted instantiation: listener.c:fd_cond_send
Unexecuted instantiation: log.c:fd_cond_send
Unexecuted instantiation: mworker.c:fd_cond_send
Unexecuted instantiation: peers.c:fd_cond_send
Unexecuted instantiation: pool.c:fd_cond_send
Unexecuted instantiation: proto_sockpair.c:fd_cond_send
Unexecuted instantiation: protocol.c:fd_cond_send
Unexecuted instantiation: proxy.c:fd_cond_send
Unexecuted instantiation: resolvers.c:fd_cond_send
Unexecuted instantiation: ring.c:fd_cond_send
Unexecuted instantiation: sample.c:fd_cond_send
Unexecuted instantiation: server.c:fd_cond_send
Unexecuted instantiation: session.c:fd_cond_send
Unexecuted instantiation: signal.c:fd_cond_send
Unexecuted instantiation: sink.c:fd_cond_send
Unexecuted instantiation: sock.c:fd_cond_send
Unexecuted instantiation: sock_inet.c:fd_cond_send
Unexecuted instantiation: stats-proxy.c:fd_cond_send
Unexecuted instantiation: stats.c:fd_cond_send
Unexecuted instantiation: stick_table.c:fd_cond_send
Unexecuted instantiation: stream.c:fd_cond_send
Unexecuted instantiation: task.c:fd_cond_send
Unexecuted instantiation: tcp_rules.c:fd_cond_send
Unexecuted instantiation: tcpcheck.c:fd_cond_send
Unexecuted instantiation: thread.c:fd_cond_send
Unexecuted instantiation: tools.c:fd_cond_send
Unexecuted instantiation: trace.c:fd_cond_send
Unexecuted instantiation: vars.c:fd_cond_send
Unexecuted instantiation: action.c:fd_cond_send
Unexecuted instantiation: activity.c:fd_cond_send
Unexecuted instantiation: applet.c:fd_cond_send
Unexecuted instantiation: backend.c:fd_cond_send
Unexecuted instantiation: cfgparse-listen.c:fd_cond_send
Unexecuted instantiation: cfgparse.c:fd_cond_send
Unexecuted instantiation: channel.c:fd_cond_send
Unexecuted instantiation: check.c:fd_cond_send
Unexecuted instantiation: cli.c:fd_cond_send
Unexecuted instantiation: connection.c:fd_cond_send
Unexecuted instantiation: debug.c:fd_cond_send
Unexecuted instantiation: dgram.c:fd_cond_send
Unexecuted instantiation: dns.c:fd_cond_send
Unexecuted instantiation: dns_ring.c:fd_cond_send
Unexecuted instantiation: errors.c:fd_cond_send
Unexecuted instantiation: event_hdl.c:fd_cond_send
Unexecuted instantiation: extcheck.c:fd_cond_send
Unexecuted instantiation: fd.c:fd_cond_send
Unexecuted instantiation: filters.c:fd_cond_send
Unexecuted instantiation: flt_decomp.c:fd_cond_send
Unexecuted instantiation: flt_http_comp.c:fd_cond_send
Unexecuted instantiation: frontend.c:fd_cond_send
Unexecuted instantiation: haterm.c:fd_cond_send
Unexecuted instantiation: http_ana.c:fd_cond_send
Unexecuted instantiation: http_ext.c:fd_cond_send
Unexecuted instantiation: http_htx.c:fd_cond_send
Unexecuted instantiation: http_rules.c:fd_cond_send
Unexecuted instantiation: lb_chash.c:fd_cond_send
Unexecuted instantiation: lb_fwlc.c:fd_cond_send
Unexecuted instantiation: limits.c:fd_cond_send
Unexecuted instantiation: mailers.c:fd_cond_send
Unexecuted instantiation: mux_spop.c:fd_cond_send
Unexecuted instantiation: pattern.c:fd_cond_send
Unexecuted instantiation: payload.c:fd_cond_send
Unexecuted instantiation: proto_rhttp.c:fd_cond_send
Unexecuted instantiation: queue.c:fd_cond_send
Unexecuted instantiation: stats-file.c:fd_cond_send
Unexecuted instantiation: stats-html.c:fd_cond_send
Unexecuted instantiation: stats-json.c:fd_cond_send
Unexecuted instantiation: stconn.c:fd_cond_send
Unexecuted instantiation: cache.c:fd_cond_send
Unexecuted instantiation: cfgparse-global.c:fd_cond_send
Unexecuted instantiation: compression.c:fd_cond_send
Unexecuted instantiation: fcgi-app.c:fd_cond_send
Unexecuted instantiation: flt_spoe.c:fd_cond_send
Unexecuted instantiation: http_fetch.c:fd_cond_send
Unexecuted instantiation: proto_tcp.c:fd_cond_send
273
274
/* Report that FD <fd> may receive and send without polling. Used at FD
275
 * initialization.
276
 */
277
static inline void fd_may_both(const int fd)
278
0
{
279
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
280
0
  HA_ATOMIC_OR(&fdtab[fd].state, FD_EV_READY_RW);
281
0
}
Unexecuted instantiation: haproxy.c:fd_may_both
Unexecuted instantiation: listener.c:fd_may_both
Unexecuted instantiation: log.c:fd_may_both
Unexecuted instantiation: mworker.c:fd_may_both
Unexecuted instantiation: peers.c:fd_may_both
Unexecuted instantiation: pool.c:fd_may_both
Unexecuted instantiation: proto_sockpair.c:fd_may_both
Unexecuted instantiation: protocol.c:fd_may_both
Unexecuted instantiation: proxy.c:fd_may_both
Unexecuted instantiation: resolvers.c:fd_may_both
Unexecuted instantiation: ring.c:fd_may_both
Unexecuted instantiation: sample.c:fd_may_both
Unexecuted instantiation: server.c:fd_may_both
Unexecuted instantiation: session.c:fd_may_both
Unexecuted instantiation: signal.c:fd_may_both
Unexecuted instantiation: sink.c:fd_may_both
Unexecuted instantiation: sock.c:fd_may_both
Unexecuted instantiation: sock_inet.c:fd_may_both
Unexecuted instantiation: stats-proxy.c:fd_may_both
Unexecuted instantiation: stats.c:fd_may_both
Unexecuted instantiation: stick_table.c:fd_may_both
Unexecuted instantiation: stream.c:fd_may_both
Unexecuted instantiation: task.c:fd_may_both
Unexecuted instantiation: tcp_rules.c:fd_may_both
Unexecuted instantiation: tcpcheck.c:fd_may_both
Unexecuted instantiation: thread.c:fd_may_both
Unexecuted instantiation: tools.c:fd_may_both
Unexecuted instantiation: trace.c:fd_may_both
Unexecuted instantiation: vars.c:fd_may_both
Unexecuted instantiation: action.c:fd_may_both
Unexecuted instantiation: activity.c:fd_may_both
Unexecuted instantiation: applet.c:fd_may_both
Unexecuted instantiation: backend.c:fd_may_both
Unexecuted instantiation: cfgparse-listen.c:fd_may_both
Unexecuted instantiation: cfgparse.c:fd_may_both
Unexecuted instantiation: channel.c:fd_may_both
Unexecuted instantiation: check.c:fd_may_both
Unexecuted instantiation: cli.c:fd_may_both
Unexecuted instantiation: connection.c:fd_may_both
Unexecuted instantiation: debug.c:fd_may_both
Unexecuted instantiation: dgram.c:fd_may_both
Unexecuted instantiation: dns.c:fd_may_both
Unexecuted instantiation: dns_ring.c:fd_may_both
Unexecuted instantiation: errors.c:fd_may_both
Unexecuted instantiation: event_hdl.c:fd_may_both
Unexecuted instantiation: extcheck.c:fd_may_both
Unexecuted instantiation: fd.c:fd_may_both
Unexecuted instantiation: filters.c:fd_may_both
Unexecuted instantiation: flt_decomp.c:fd_may_both
Unexecuted instantiation: flt_http_comp.c:fd_may_both
Unexecuted instantiation: frontend.c:fd_may_both
Unexecuted instantiation: haterm.c:fd_may_both
Unexecuted instantiation: http_ana.c:fd_may_both
Unexecuted instantiation: http_ext.c:fd_may_both
Unexecuted instantiation: http_htx.c:fd_may_both
Unexecuted instantiation: http_rules.c:fd_may_both
Unexecuted instantiation: lb_chash.c:fd_may_both
Unexecuted instantiation: lb_fwlc.c:fd_may_both
Unexecuted instantiation: limits.c:fd_may_both
Unexecuted instantiation: mailers.c:fd_may_both
Unexecuted instantiation: mux_spop.c:fd_may_both
Unexecuted instantiation: pattern.c:fd_may_both
Unexecuted instantiation: payload.c:fd_may_both
Unexecuted instantiation: proto_rhttp.c:fd_may_both
Unexecuted instantiation: queue.c:fd_may_both
Unexecuted instantiation: stats-file.c:fd_may_both
Unexecuted instantiation: stats-html.c:fd_may_both
Unexecuted instantiation: stats-json.c:fd_may_both
Unexecuted instantiation: stconn.c:fd_may_both
Unexecuted instantiation: cache.c:fd_may_both
Unexecuted instantiation: cfgparse-global.c:fd_may_both
Unexecuted instantiation: compression.c:fd_may_both
Unexecuted instantiation: fcgi-app.c:fd_may_both
Unexecuted instantiation: flt_spoe.c:fd_may_both
Unexecuted instantiation: http_fetch.c:fd_may_both
Unexecuted instantiation: proto_tcp.c:fd_may_both
282
283
/* Report that FD <fd> cannot send anymore without polling (EAGAIN detected). */
284
static inline void fd_cant_send(const int fd)
285
0
{
286
  /* removing ready never changes polled status */
287
0
  if (!(fdtab[fd].state & FD_EV_READY_W) ||
288
0
      !HA_ATOMIC_BTR(&fdtab[fd].state, FD_EV_READY_W_BIT))
289
0
    return;
290
0
}
Unexecuted instantiation: haproxy.c:fd_cant_send
Unexecuted instantiation: listener.c:fd_cant_send
Unexecuted instantiation: log.c:fd_cant_send
Unexecuted instantiation: mworker.c:fd_cant_send
Unexecuted instantiation: peers.c:fd_cant_send
Unexecuted instantiation: pool.c:fd_cant_send
Unexecuted instantiation: proto_sockpair.c:fd_cant_send
Unexecuted instantiation: protocol.c:fd_cant_send
Unexecuted instantiation: proxy.c:fd_cant_send
Unexecuted instantiation: resolvers.c:fd_cant_send
Unexecuted instantiation: ring.c:fd_cant_send
Unexecuted instantiation: sample.c:fd_cant_send
Unexecuted instantiation: server.c:fd_cant_send
Unexecuted instantiation: session.c:fd_cant_send
Unexecuted instantiation: signal.c:fd_cant_send
Unexecuted instantiation: sink.c:fd_cant_send
Unexecuted instantiation: sock.c:fd_cant_send
Unexecuted instantiation: sock_inet.c:fd_cant_send
Unexecuted instantiation: stats-proxy.c:fd_cant_send
Unexecuted instantiation: stats.c:fd_cant_send
Unexecuted instantiation: stick_table.c:fd_cant_send
Unexecuted instantiation: stream.c:fd_cant_send
Unexecuted instantiation: task.c:fd_cant_send
Unexecuted instantiation: tcp_rules.c:fd_cant_send
Unexecuted instantiation: tcpcheck.c:fd_cant_send
Unexecuted instantiation: thread.c:fd_cant_send
Unexecuted instantiation: tools.c:fd_cant_send
Unexecuted instantiation: trace.c:fd_cant_send
Unexecuted instantiation: vars.c:fd_cant_send
Unexecuted instantiation: action.c:fd_cant_send
Unexecuted instantiation: activity.c:fd_cant_send
Unexecuted instantiation: applet.c:fd_cant_send
Unexecuted instantiation: backend.c:fd_cant_send
Unexecuted instantiation: cfgparse-listen.c:fd_cant_send
Unexecuted instantiation: cfgparse.c:fd_cant_send
Unexecuted instantiation: channel.c:fd_cant_send
Unexecuted instantiation: check.c:fd_cant_send
Unexecuted instantiation: cli.c:fd_cant_send
Unexecuted instantiation: connection.c:fd_cant_send
Unexecuted instantiation: debug.c:fd_cant_send
Unexecuted instantiation: dgram.c:fd_cant_send
Unexecuted instantiation: dns.c:fd_cant_send
Unexecuted instantiation: dns_ring.c:fd_cant_send
Unexecuted instantiation: errors.c:fd_cant_send
Unexecuted instantiation: event_hdl.c:fd_cant_send
Unexecuted instantiation: extcheck.c:fd_cant_send
Unexecuted instantiation: fd.c:fd_cant_send
Unexecuted instantiation: filters.c:fd_cant_send
Unexecuted instantiation: flt_decomp.c:fd_cant_send
Unexecuted instantiation: flt_http_comp.c:fd_cant_send
Unexecuted instantiation: frontend.c:fd_cant_send
Unexecuted instantiation: haterm.c:fd_cant_send
Unexecuted instantiation: http_ana.c:fd_cant_send
Unexecuted instantiation: http_ext.c:fd_cant_send
Unexecuted instantiation: http_htx.c:fd_cant_send
Unexecuted instantiation: http_rules.c:fd_cant_send
Unexecuted instantiation: lb_chash.c:fd_cant_send
Unexecuted instantiation: lb_fwlc.c:fd_cant_send
Unexecuted instantiation: limits.c:fd_cant_send
Unexecuted instantiation: mailers.c:fd_cant_send
Unexecuted instantiation: mux_spop.c:fd_cant_send
Unexecuted instantiation: pattern.c:fd_cant_send
Unexecuted instantiation: payload.c:fd_cant_send
Unexecuted instantiation: proto_rhttp.c:fd_cant_send
Unexecuted instantiation: queue.c:fd_cant_send
Unexecuted instantiation: stats-file.c:fd_cant_send
Unexecuted instantiation: stats-html.c:fd_cant_send
Unexecuted instantiation: stats-json.c:fd_cant_send
Unexecuted instantiation: stconn.c:fd_cant_send
Unexecuted instantiation: cache.c:fd_cant_send
Unexecuted instantiation: cfgparse-global.c:fd_cant_send
Unexecuted instantiation: compression.c:fd_cant_send
Unexecuted instantiation: fcgi-app.c:fd_cant_send
Unexecuted instantiation: flt_spoe.c:fd_cant_send
Unexecuted instantiation: http_fetch.c:fd_cant_send
Unexecuted instantiation: proto_tcp.c:fd_cant_send
291
292
/* Report that FD <fd> may send again without polling (EAGAIN not detected). */
293
static inline void fd_may_send(const int fd)
294
0
{
295
  /* marking ready never changes polled status */
296
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
297
0
  if ((fdtab[fd].state & FD_EV_READY_W) ||
298
0
      HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_W_BIT))
299
0
    return;
300
0
}
Unexecuted instantiation: haproxy.c:fd_may_send
Unexecuted instantiation: listener.c:fd_may_send
Unexecuted instantiation: log.c:fd_may_send
Unexecuted instantiation: mworker.c:fd_may_send
Unexecuted instantiation: peers.c:fd_may_send
Unexecuted instantiation: pool.c:fd_may_send
Unexecuted instantiation: proto_sockpair.c:fd_may_send
Unexecuted instantiation: protocol.c:fd_may_send
Unexecuted instantiation: proxy.c:fd_may_send
Unexecuted instantiation: resolvers.c:fd_may_send
Unexecuted instantiation: ring.c:fd_may_send
Unexecuted instantiation: sample.c:fd_may_send
Unexecuted instantiation: server.c:fd_may_send
Unexecuted instantiation: session.c:fd_may_send
Unexecuted instantiation: signal.c:fd_may_send
Unexecuted instantiation: sink.c:fd_may_send
Unexecuted instantiation: sock.c:fd_may_send
Unexecuted instantiation: sock_inet.c:fd_may_send
Unexecuted instantiation: stats-proxy.c:fd_may_send
Unexecuted instantiation: stats.c:fd_may_send
Unexecuted instantiation: stick_table.c:fd_may_send
Unexecuted instantiation: stream.c:fd_may_send
Unexecuted instantiation: task.c:fd_may_send
Unexecuted instantiation: tcp_rules.c:fd_may_send
Unexecuted instantiation: tcpcheck.c:fd_may_send
Unexecuted instantiation: thread.c:fd_may_send
Unexecuted instantiation: tools.c:fd_may_send
Unexecuted instantiation: trace.c:fd_may_send
Unexecuted instantiation: vars.c:fd_may_send
Unexecuted instantiation: action.c:fd_may_send
Unexecuted instantiation: activity.c:fd_may_send
Unexecuted instantiation: applet.c:fd_may_send
Unexecuted instantiation: backend.c:fd_may_send
Unexecuted instantiation: cfgparse-listen.c:fd_may_send
Unexecuted instantiation: cfgparse.c:fd_may_send
Unexecuted instantiation: channel.c:fd_may_send
Unexecuted instantiation: check.c:fd_may_send
Unexecuted instantiation: cli.c:fd_may_send
Unexecuted instantiation: connection.c:fd_may_send
Unexecuted instantiation: debug.c:fd_may_send
Unexecuted instantiation: dgram.c:fd_may_send
Unexecuted instantiation: dns.c:fd_may_send
Unexecuted instantiation: dns_ring.c:fd_may_send
Unexecuted instantiation: errors.c:fd_may_send
Unexecuted instantiation: event_hdl.c:fd_may_send
Unexecuted instantiation: extcheck.c:fd_may_send
Unexecuted instantiation: fd.c:fd_may_send
Unexecuted instantiation: filters.c:fd_may_send
Unexecuted instantiation: flt_decomp.c:fd_may_send
Unexecuted instantiation: flt_http_comp.c:fd_may_send
Unexecuted instantiation: frontend.c:fd_may_send
Unexecuted instantiation: haterm.c:fd_may_send
Unexecuted instantiation: http_ana.c:fd_may_send
Unexecuted instantiation: http_ext.c:fd_may_send
Unexecuted instantiation: http_htx.c:fd_may_send
Unexecuted instantiation: http_rules.c:fd_may_send
Unexecuted instantiation: lb_chash.c:fd_may_send
Unexecuted instantiation: lb_fwlc.c:fd_may_send
Unexecuted instantiation: limits.c:fd_may_send
Unexecuted instantiation: mailers.c:fd_may_send
Unexecuted instantiation: mux_spop.c:fd_may_send
Unexecuted instantiation: pattern.c:fd_may_send
Unexecuted instantiation: payload.c:fd_may_send
Unexecuted instantiation: proto_rhttp.c:fd_may_send
Unexecuted instantiation: queue.c:fd_may_send
Unexecuted instantiation: stats-file.c:fd_may_send
Unexecuted instantiation: stats-html.c:fd_may_send
Unexecuted instantiation: stats-json.c:fd_may_send
Unexecuted instantiation: stconn.c:fd_may_send
Unexecuted instantiation: cache.c:fd_may_send
Unexecuted instantiation: cfgparse-global.c:fd_may_send
Unexecuted instantiation: compression.c:fd_may_send
Unexecuted instantiation: fcgi-app.c:fd_may_send
Unexecuted instantiation: flt_spoe.c:fd_may_send
Unexecuted instantiation: http_fetch.c:fd_may_send
Unexecuted instantiation: proto_tcp.c:fd_may_send
301
302
/* Prepare FD <fd> to try to receive */
303
static inline void fd_want_recv(int fd)
304
0
{
305
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
306
0
  if ((fdtab[fd].state & FD_EV_ACTIVE_R) ||
307
0
      HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_ACTIVE_R_BIT))
308
0
    return;
309
0
  updt_fd_polling(fd);
310
0
}
Unexecuted instantiation: haproxy.c:fd_want_recv
Unexecuted instantiation: listener.c:fd_want_recv
Unexecuted instantiation: log.c:fd_want_recv
Unexecuted instantiation: mworker.c:fd_want_recv
Unexecuted instantiation: peers.c:fd_want_recv
Unexecuted instantiation: pool.c:fd_want_recv
Unexecuted instantiation: proto_sockpair.c:fd_want_recv
Unexecuted instantiation: protocol.c:fd_want_recv
Unexecuted instantiation: proxy.c:fd_want_recv
Unexecuted instantiation: resolvers.c:fd_want_recv
Unexecuted instantiation: ring.c:fd_want_recv
Unexecuted instantiation: sample.c:fd_want_recv
Unexecuted instantiation: server.c:fd_want_recv
Unexecuted instantiation: session.c:fd_want_recv
Unexecuted instantiation: signal.c:fd_want_recv
Unexecuted instantiation: sink.c:fd_want_recv
Unexecuted instantiation: sock.c:fd_want_recv
Unexecuted instantiation: sock_inet.c:fd_want_recv
Unexecuted instantiation: stats-proxy.c:fd_want_recv
Unexecuted instantiation: stats.c:fd_want_recv
Unexecuted instantiation: stick_table.c:fd_want_recv
Unexecuted instantiation: stream.c:fd_want_recv
Unexecuted instantiation: task.c:fd_want_recv
Unexecuted instantiation: tcp_rules.c:fd_want_recv
Unexecuted instantiation: tcpcheck.c:fd_want_recv
Unexecuted instantiation: thread.c:fd_want_recv
Unexecuted instantiation: tools.c:fd_want_recv
Unexecuted instantiation: trace.c:fd_want_recv
Unexecuted instantiation: vars.c:fd_want_recv
Unexecuted instantiation: action.c:fd_want_recv
Unexecuted instantiation: activity.c:fd_want_recv
Unexecuted instantiation: applet.c:fd_want_recv
Unexecuted instantiation: backend.c:fd_want_recv
Unexecuted instantiation: cfgparse-listen.c:fd_want_recv
Unexecuted instantiation: cfgparse.c:fd_want_recv
Unexecuted instantiation: channel.c:fd_want_recv
Unexecuted instantiation: check.c:fd_want_recv
Unexecuted instantiation: cli.c:fd_want_recv
Unexecuted instantiation: connection.c:fd_want_recv
Unexecuted instantiation: debug.c:fd_want_recv
Unexecuted instantiation: dgram.c:fd_want_recv
Unexecuted instantiation: dns.c:fd_want_recv
Unexecuted instantiation: dns_ring.c:fd_want_recv
Unexecuted instantiation: errors.c:fd_want_recv
Unexecuted instantiation: event_hdl.c:fd_want_recv
Unexecuted instantiation: extcheck.c:fd_want_recv
Unexecuted instantiation: fd.c:fd_want_recv
Unexecuted instantiation: filters.c:fd_want_recv
Unexecuted instantiation: flt_decomp.c:fd_want_recv
Unexecuted instantiation: flt_http_comp.c:fd_want_recv
Unexecuted instantiation: frontend.c:fd_want_recv
Unexecuted instantiation: haterm.c:fd_want_recv
Unexecuted instantiation: http_ana.c:fd_want_recv
Unexecuted instantiation: http_ext.c:fd_want_recv
Unexecuted instantiation: http_htx.c:fd_want_recv
Unexecuted instantiation: http_rules.c:fd_want_recv
Unexecuted instantiation: lb_chash.c:fd_want_recv
Unexecuted instantiation: lb_fwlc.c:fd_want_recv
Unexecuted instantiation: limits.c:fd_want_recv
Unexecuted instantiation: mailers.c:fd_want_recv
Unexecuted instantiation: mux_spop.c:fd_want_recv
Unexecuted instantiation: pattern.c:fd_want_recv
Unexecuted instantiation: payload.c:fd_want_recv
Unexecuted instantiation: proto_rhttp.c:fd_want_recv
Unexecuted instantiation: queue.c:fd_want_recv
Unexecuted instantiation: stats-file.c:fd_want_recv
Unexecuted instantiation: stats-html.c:fd_want_recv
Unexecuted instantiation: stats-json.c:fd_want_recv
Unexecuted instantiation: stconn.c:fd_want_recv
Unexecuted instantiation: cache.c:fd_want_recv
Unexecuted instantiation: cfgparse-global.c:fd_want_recv
Unexecuted instantiation: compression.c:fd_want_recv
Unexecuted instantiation: fcgi-app.c:fd_want_recv
Unexecuted instantiation: flt_spoe.c:fd_want_recv
Unexecuted instantiation: http_fetch.c:fd_want_recv
Unexecuted instantiation: proto_tcp.c:fd_want_recv
311
312
/* Prepare FD <fd> to try to receive, and only create update if fd_updt exists
313
 * (essentially for receivers during early boot).
314
 */
315
static inline void fd_want_recv_safe(int fd)
316
0
{
317
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
318
0
  if ((fdtab[fd].state & FD_EV_ACTIVE_R) ||
319
0
      HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_ACTIVE_R_BIT))
320
0
    return;
321
0
  if (fd_updt)
322
0
    updt_fd_polling(fd);
323
0
}
Unexecuted instantiation: haproxy.c:fd_want_recv_safe
Unexecuted instantiation: listener.c:fd_want_recv_safe
Unexecuted instantiation: log.c:fd_want_recv_safe
Unexecuted instantiation: mworker.c:fd_want_recv_safe
Unexecuted instantiation: peers.c:fd_want_recv_safe
Unexecuted instantiation: pool.c:fd_want_recv_safe
Unexecuted instantiation: proto_sockpair.c:fd_want_recv_safe
Unexecuted instantiation: protocol.c:fd_want_recv_safe
Unexecuted instantiation: proxy.c:fd_want_recv_safe
Unexecuted instantiation: resolvers.c:fd_want_recv_safe
Unexecuted instantiation: ring.c:fd_want_recv_safe
Unexecuted instantiation: sample.c:fd_want_recv_safe
Unexecuted instantiation: server.c:fd_want_recv_safe
Unexecuted instantiation: session.c:fd_want_recv_safe
Unexecuted instantiation: signal.c:fd_want_recv_safe
Unexecuted instantiation: sink.c:fd_want_recv_safe
Unexecuted instantiation: sock.c:fd_want_recv_safe
Unexecuted instantiation: sock_inet.c:fd_want_recv_safe
Unexecuted instantiation: stats-proxy.c:fd_want_recv_safe
Unexecuted instantiation: stats.c:fd_want_recv_safe
Unexecuted instantiation: stick_table.c:fd_want_recv_safe
Unexecuted instantiation: stream.c:fd_want_recv_safe
Unexecuted instantiation: task.c:fd_want_recv_safe
Unexecuted instantiation: tcp_rules.c:fd_want_recv_safe
Unexecuted instantiation: tcpcheck.c:fd_want_recv_safe
Unexecuted instantiation: thread.c:fd_want_recv_safe
Unexecuted instantiation: tools.c:fd_want_recv_safe
Unexecuted instantiation: trace.c:fd_want_recv_safe
Unexecuted instantiation: vars.c:fd_want_recv_safe
Unexecuted instantiation: action.c:fd_want_recv_safe
Unexecuted instantiation: activity.c:fd_want_recv_safe
Unexecuted instantiation: applet.c:fd_want_recv_safe
Unexecuted instantiation: backend.c:fd_want_recv_safe
Unexecuted instantiation: cfgparse-listen.c:fd_want_recv_safe
Unexecuted instantiation: cfgparse.c:fd_want_recv_safe
Unexecuted instantiation: channel.c:fd_want_recv_safe
Unexecuted instantiation: check.c:fd_want_recv_safe
Unexecuted instantiation: cli.c:fd_want_recv_safe
Unexecuted instantiation: connection.c:fd_want_recv_safe
Unexecuted instantiation: debug.c:fd_want_recv_safe
Unexecuted instantiation: dgram.c:fd_want_recv_safe
Unexecuted instantiation: dns.c:fd_want_recv_safe
Unexecuted instantiation: dns_ring.c:fd_want_recv_safe
Unexecuted instantiation: errors.c:fd_want_recv_safe
Unexecuted instantiation: event_hdl.c:fd_want_recv_safe
Unexecuted instantiation: extcheck.c:fd_want_recv_safe
Unexecuted instantiation: fd.c:fd_want_recv_safe
Unexecuted instantiation: filters.c:fd_want_recv_safe
Unexecuted instantiation: flt_decomp.c:fd_want_recv_safe
Unexecuted instantiation: flt_http_comp.c:fd_want_recv_safe
Unexecuted instantiation: frontend.c:fd_want_recv_safe
Unexecuted instantiation: haterm.c:fd_want_recv_safe
Unexecuted instantiation: http_ana.c:fd_want_recv_safe
Unexecuted instantiation: http_ext.c:fd_want_recv_safe
Unexecuted instantiation: http_htx.c:fd_want_recv_safe
Unexecuted instantiation: http_rules.c:fd_want_recv_safe
Unexecuted instantiation: lb_chash.c:fd_want_recv_safe
Unexecuted instantiation: lb_fwlc.c:fd_want_recv_safe
Unexecuted instantiation: limits.c:fd_want_recv_safe
Unexecuted instantiation: mailers.c:fd_want_recv_safe
Unexecuted instantiation: mux_spop.c:fd_want_recv_safe
Unexecuted instantiation: pattern.c:fd_want_recv_safe
Unexecuted instantiation: payload.c:fd_want_recv_safe
Unexecuted instantiation: proto_rhttp.c:fd_want_recv_safe
Unexecuted instantiation: queue.c:fd_want_recv_safe
Unexecuted instantiation: stats-file.c:fd_want_recv_safe
Unexecuted instantiation: stats-html.c:fd_want_recv_safe
Unexecuted instantiation: stats-json.c:fd_want_recv_safe
Unexecuted instantiation: stconn.c:fd_want_recv_safe
Unexecuted instantiation: cache.c:fd_want_recv_safe
Unexecuted instantiation: cfgparse-global.c:fd_want_recv_safe
Unexecuted instantiation: compression.c:fd_want_recv_safe
Unexecuted instantiation: fcgi-app.c:fd_want_recv_safe
Unexecuted instantiation: flt_spoe.c:fd_want_recv_safe
Unexecuted instantiation: http_fetch.c:fd_want_recv_safe
Unexecuted instantiation: proto_tcp.c:fd_want_recv_safe
324
325
/* Prepare FD <fd> to try to send */
326
static inline void fd_want_send(int fd)
327
0
{
328
0
  BUG_ON_HOT(fdtab[fd].owner == NULL);
329
0
  if ((fdtab[fd].state & FD_EV_ACTIVE_W) ||
330
0
      HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_ACTIVE_W_BIT))
331
0
    return;
332
0
  updt_fd_polling(fd);
333
0
}
Unexecuted instantiation: haproxy.c:fd_want_send
Unexecuted instantiation: listener.c:fd_want_send
Unexecuted instantiation: log.c:fd_want_send
Unexecuted instantiation: mworker.c:fd_want_send
Unexecuted instantiation: peers.c:fd_want_send
Unexecuted instantiation: pool.c:fd_want_send
Unexecuted instantiation: proto_sockpair.c:fd_want_send
Unexecuted instantiation: protocol.c:fd_want_send
Unexecuted instantiation: proxy.c:fd_want_send
Unexecuted instantiation: resolvers.c:fd_want_send
Unexecuted instantiation: ring.c:fd_want_send
Unexecuted instantiation: sample.c:fd_want_send
Unexecuted instantiation: server.c:fd_want_send
Unexecuted instantiation: session.c:fd_want_send
Unexecuted instantiation: signal.c:fd_want_send
Unexecuted instantiation: sink.c:fd_want_send
Unexecuted instantiation: sock.c:fd_want_send
Unexecuted instantiation: sock_inet.c:fd_want_send
Unexecuted instantiation: stats-proxy.c:fd_want_send
Unexecuted instantiation: stats.c:fd_want_send
Unexecuted instantiation: stick_table.c:fd_want_send
Unexecuted instantiation: stream.c:fd_want_send
Unexecuted instantiation: task.c:fd_want_send
Unexecuted instantiation: tcp_rules.c:fd_want_send
Unexecuted instantiation: tcpcheck.c:fd_want_send
Unexecuted instantiation: thread.c:fd_want_send
Unexecuted instantiation: tools.c:fd_want_send
Unexecuted instantiation: trace.c:fd_want_send
Unexecuted instantiation: vars.c:fd_want_send
Unexecuted instantiation: action.c:fd_want_send
Unexecuted instantiation: activity.c:fd_want_send
Unexecuted instantiation: applet.c:fd_want_send
Unexecuted instantiation: backend.c:fd_want_send
Unexecuted instantiation: cfgparse-listen.c:fd_want_send
Unexecuted instantiation: cfgparse.c:fd_want_send
Unexecuted instantiation: channel.c:fd_want_send
Unexecuted instantiation: check.c:fd_want_send
Unexecuted instantiation: cli.c:fd_want_send
Unexecuted instantiation: connection.c:fd_want_send
Unexecuted instantiation: debug.c:fd_want_send
Unexecuted instantiation: dgram.c:fd_want_send
Unexecuted instantiation: dns.c:fd_want_send
Unexecuted instantiation: dns_ring.c:fd_want_send
Unexecuted instantiation: errors.c:fd_want_send
Unexecuted instantiation: event_hdl.c:fd_want_send
Unexecuted instantiation: extcheck.c:fd_want_send
Unexecuted instantiation: fd.c:fd_want_send
Unexecuted instantiation: filters.c:fd_want_send
Unexecuted instantiation: flt_decomp.c:fd_want_send
Unexecuted instantiation: flt_http_comp.c:fd_want_send
Unexecuted instantiation: frontend.c:fd_want_send
Unexecuted instantiation: haterm.c:fd_want_send
Unexecuted instantiation: http_ana.c:fd_want_send
Unexecuted instantiation: http_ext.c:fd_want_send
Unexecuted instantiation: http_htx.c:fd_want_send
Unexecuted instantiation: http_rules.c:fd_want_send
Unexecuted instantiation: lb_chash.c:fd_want_send
Unexecuted instantiation: lb_fwlc.c:fd_want_send
Unexecuted instantiation: limits.c:fd_want_send
Unexecuted instantiation: mailers.c:fd_want_send
Unexecuted instantiation: mux_spop.c:fd_want_send
Unexecuted instantiation: pattern.c:fd_want_send
Unexecuted instantiation: payload.c:fd_want_send
Unexecuted instantiation: proto_rhttp.c:fd_want_send
Unexecuted instantiation: queue.c:fd_want_send
Unexecuted instantiation: stats-file.c:fd_want_send
Unexecuted instantiation: stats-html.c:fd_want_send
Unexecuted instantiation: stats-json.c:fd_want_send
Unexecuted instantiation: stconn.c:fd_want_send
Unexecuted instantiation: cache.c:fd_want_send
Unexecuted instantiation: cfgparse-global.c:fd_want_send
Unexecuted instantiation: compression.c:fd_want_send
Unexecuted instantiation: fcgi-app.c:fd_want_send
Unexecuted instantiation: flt_spoe.c:fd_want_send
Unexecuted instantiation: http_fetch.c:fd_want_send
Unexecuted instantiation: proto_tcp.c:fd_want_send
334
335
/* returns the tgid from an fd (masks the refcount) */
336
static forceinline int fd_tgid(int fd)
337
0
{
338
0
  return _HA_ATOMIC_LOAD(&fdtab[fd].refc_tgid) & 0xFFFF;
339
0
}
Unexecuted instantiation: haproxy.c:fd_tgid
Unexecuted instantiation: listener.c:fd_tgid
Unexecuted instantiation: log.c:fd_tgid
Unexecuted instantiation: mworker.c:fd_tgid
Unexecuted instantiation: peers.c:fd_tgid
Unexecuted instantiation: pool.c:fd_tgid
Unexecuted instantiation: proto_sockpair.c:fd_tgid
Unexecuted instantiation: protocol.c:fd_tgid
Unexecuted instantiation: proxy.c:fd_tgid
Unexecuted instantiation: resolvers.c:fd_tgid
Unexecuted instantiation: ring.c:fd_tgid
Unexecuted instantiation: sample.c:fd_tgid
Unexecuted instantiation: server.c:fd_tgid
Unexecuted instantiation: session.c:fd_tgid
Unexecuted instantiation: signal.c:fd_tgid
Unexecuted instantiation: sink.c:fd_tgid
Unexecuted instantiation: sock.c:fd_tgid
Unexecuted instantiation: sock_inet.c:fd_tgid
Unexecuted instantiation: stats-proxy.c:fd_tgid
Unexecuted instantiation: stats.c:fd_tgid
Unexecuted instantiation: stick_table.c:fd_tgid
Unexecuted instantiation: stream.c:fd_tgid
Unexecuted instantiation: task.c:fd_tgid
Unexecuted instantiation: tcp_rules.c:fd_tgid
Unexecuted instantiation: tcpcheck.c:fd_tgid
Unexecuted instantiation: thread.c:fd_tgid
Unexecuted instantiation: tools.c:fd_tgid
Unexecuted instantiation: trace.c:fd_tgid
Unexecuted instantiation: vars.c:fd_tgid
Unexecuted instantiation: action.c:fd_tgid
Unexecuted instantiation: activity.c:fd_tgid
Unexecuted instantiation: applet.c:fd_tgid
Unexecuted instantiation: backend.c:fd_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_tgid
Unexecuted instantiation: cfgparse.c:fd_tgid
Unexecuted instantiation: channel.c:fd_tgid
Unexecuted instantiation: check.c:fd_tgid
Unexecuted instantiation: cli.c:fd_tgid
Unexecuted instantiation: connection.c:fd_tgid
Unexecuted instantiation: debug.c:fd_tgid
Unexecuted instantiation: dgram.c:fd_tgid
Unexecuted instantiation: dns.c:fd_tgid
Unexecuted instantiation: dns_ring.c:fd_tgid
Unexecuted instantiation: errors.c:fd_tgid
Unexecuted instantiation: event_hdl.c:fd_tgid
Unexecuted instantiation: extcheck.c:fd_tgid
Unexecuted instantiation: fd.c:fd_tgid
Unexecuted instantiation: filters.c:fd_tgid
Unexecuted instantiation: flt_decomp.c:fd_tgid
Unexecuted instantiation: flt_http_comp.c:fd_tgid
Unexecuted instantiation: frontend.c:fd_tgid
Unexecuted instantiation: haterm.c:fd_tgid
Unexecuted instantiation: http_ana.c:fd_tgid
Unexecuted instantiation: http_ext.c:fd_tgid
Unexecuted instantiation: http_htx.c:fd_tgid
Unexecuted instantiation: http_rules.c:fd_tgid
Unexecuted instantiation: lb_chash.c:fd_tgid
Unexecuted instantiation: lb_fwlc.c:fd_tgid
Unexecuted instantiation: limits.c:fd_tgid
Unexecuted instantiation: mailers.c:fd_tgid
Unexecuted instantiation: mux_spop.c:fd_tgid
Unexecuted instantiation: pattern.c:fd_tgid
Unexecuted instantiation: payload.c:fd_tgid
Unexecuted instantiation: proto_rhttp.c:fd_tgid
Unexecuted instantiation: queue.c:fd_tgid
Unexecuted instantiation: stats-file.c:fd_tgid
Unexecuted instantiation: stats-html.c:fd_tgid
Unexecuted instantiation: stats-json.c:fd_tgid
Unexecuted instantiation: stconn.c:fd_tgid
Unexecuted instantiation: cache.c:fd_tgid
Unexecuted instantiation: cfgparse-global.c:fd_tgid
Unexecuted instantiation: compression.c:fd_tgid
Unexecuted instantiation: fcgi-app.c:fd_tgid
Unexecuted instantiation: flt_spoe.c:fd_tgid
Unexecuted instantiation: http_fetch.c:fd_tgid
Unexecuted instantiation: proto_tcp.c:fd_tgid
340
341
/* Release a tgid previously taken by fd_grab_tgid() */
342
static forceinline void fd_drop_tgid(int fd)
343
0
{
344
0
  HA_ATOMIC_SUB(&fdtab[fd].refc_tgid, 0x10000);
345
0
}
Unexecuted instantiation: haproxy.c:fd_drop_tgid
Unexecuted instantiation: listener.c:fd_drop_tgid
Unexecuted instantiation: log.c:fd_drop_tgid
Unexecuted instantiation: mworker.c:fd_drop_tgid
Unexecuted instantiation: peers.c:fd_drop_tgid
Unexecuted instantiation: pool.c:fd_drop_tgid
Unexecuted instantiation: proto_sockpair.c:fd_drop_tgid
Unexecuted instantiation: protocol.c:fd_drop_tgid
Unexecuted instantiation: proxy.c:fd_drop_tgid
Unexecuted instantiation: resolvers.c:fd_drop_tgid
Unexecuted instantiation: ring.c:fd_drop_tgid
Unexecuted instantiation: sample.c:fd_drop_tgid
Unexecuted instantiation: server.c:fd_drop_tgid
Unexecuted instantiation: session.c:fd_drop_tgid
Unexecuted instantiation: signal.c:fd_drop_tgid
Unexecuted instantiation: sink.c:fd_drop_tgid
Unexecuted instantiation: sock.c:fd_drop_tgid
Unexecuted instantiation: sock_inet.c:fd_drop_tgid
Unexecuted instantiation: stats-proxy.c:fd_drop_tgid
Unexecuted instantiation: stats.c:fd_drop_tgid
Unexecuted instantiation: stick_table.c:fd_drop_tgid
Unexecuted instantiation: stream.c:fd_drop_tgid
Unexecuted instantiation: task.c:fd_drop_tgid
Unexecuted instantiation: tcp_rules.c:fd_drop_tgid
Unexecuted instantiation: tcpcheck.c:fd_drop_tgid
Unexecuted instantiation: thread.c:fd_drop_tgid
Unexecuted instantiation: tools.c:fd_drop_tgid
Unexecuted instantiation: trace.c:fd_drop_tgid
Unexecuted instantiation: vars.c:fd_drop_tgid
Unexecuted instantiation: action.c:fd_drop_tgid
Unexecuted instantiation: activity.c:fd_drop_tgid
Unexecuted instantiation: applet.c:fd_drop_tgid
Unexecuted instantiation: backend.c:fd_drop_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_drop_tgid
Unexecuted instantiation: cfgparse.c:fd_drop_tgid
Unexecuted instantiation: channel.c:fd_drop_tgid
Unexecuted instantiation: check.c:fd_drop_tgid
Unexecuted instantiation: cli.c:fd_drop_tgid
Unexecuted instantiation: connection.c:fd_drop_tgid
Unexecuted instantiation: debug.c:fd_drop_tgid
Unexecuted instantiation: dgram.c:fd_drop_tgid
Unexecuted instantiation: dns.c:fd_drop_tgid
Unexecuted instantiation: dns_ring.c:fd_drop_tgid
Unexecuted instantiation: errors.c:fd_drop_tgid
Unexecuted instantiation: event_hdl.c:fd_drop_tgid
Unexecuted instantiation: extcheck.c:fd_drop_tgid
Unexecuted instantiation: fd.c:fd_drop_tgid
Unexecuted instantiation: filters.c:fd_drop_tgid
Unexecuted instantiation: flt_decomp.c:fd_drop_tgid
Unexecuted instantiation: flt_http_comp.c:fd_drop_tgid
Unexecuted instantiation: frontend.c:fd_drop_tgid
Unexecuted instantiation: haterm.c:fd_drop_tgid
Unexecuted instantiation: http_ana.c:fd_drop_tgid
Unexecuted instantiation: http_ext.c:fd_drop_tgid
Unexecuted instantiation: http_htx.c:fd_drop_tgid
Unexecuted instantiation: http_rules.c:fd_drop_tgid
Unexecuted instantiation: lb_chash.c:fd_drop_tgid
Unexecuted instantiation: lb_fwlc.c:fd_drop_tgid
Unexecuted instantiation: limits.c:fd_drop_tgid
Unexecuted instantiation: mailers.c:fd_drop_tgid
Unexecuted instantiation: mux_spop.c:fd_drop_tgid
Unexecuted instantiation: pattern.c:fd_drop_tgid
Unexecuted instantiation: payload.c:fd_drop_tgid
Unexecuted instantiation: proto_rhttp.c:fd_drop_tgid
Unexecuted instantiation: queue.c:fd_drop_tgid
Unexecuted instantiation: stats-file.c:fd_drop_tgid
Unexecuted instantiation: stats-html.c:fd_drop_tgid
Unexecuted instantiation: stats-json.c:fd_drop_tgid
Unexecuted instantiation: stconn.c:fd_drop_tgid
Unexecuted instantiation: cache.c:fd_drop_tgid
Unexecuted instantiation: cfgparse-global.c:fd_drop_tgid
Unexecuted instantiation: compression.c:fd_drop_tgid
Unexecuted instantiation: fcgi-app.c:fd_drop_tgid
Unexecuted instantiation: flt_spoe.c:fd_drop_tgid
Unexecuted instantiation: http_fetch.c:fd_drop_tgid
Unexecuted instantiation: proto_tcp.c:fd_drop_tgid
346
347
/* Unlock a tgid currently locked by fd_lock_tgid(). This will effectively
348
 * allow threads from the FD's tgid to check the masks and manipulate the FD.
349
 */
350
static forceinline void fd_unlock_tgid(int fd)
351
0
{
352
0
  HA_ATOMIC_AND(&fdtab[fd].refc_tgid, 0xffff7fffU);
353
0
}
Unexecuted instantiation: haproxy.c:fd_unlock_tgid
Unexecuted instantiation: listener.c:fd_unlock_tgid
Unexecuted instantiation: log.c:fd_unlock_tgid
Unexecuted instantiation: mworker.c:fd_unlock_tgid
Unexecuted instantiation: peers.c:fd_unlock_tgid
Unexecuted instantiation: pool.c:fd_unlock_tgid
Unexecuted instantiation: proto_sockpair.c:fd_unlock_tgid
Unexecuted instantiation: protocol.c:fd_unlock_tgid
Unexecuted instantiation: proxy.c:fd_unlock_tgid
Unexecuted instantiation: resolvers.c:fd_unlock_tgid
Unexecuted instantiation: ring.c:fd_unlock_tgid
Unexecuted instantiation: sample.c:fd_unlock_tgid
Unexecuted instantiation: server.c:fd_unlock_tgid
Unexecuted instantiation: session.c:fd_unlock_tgid
Unexecuted instantiation: signal.c:fd_unlock_tgid
Unexecuted instantiation: sink.c:fd_unlock_tgid
Unexecuted instantiation: sock.c:fd_unlock_tgid
Unexecuted instantiation: sock_inet.c:fd_unlock_tgid
Unexecuted instantiation: stats-proxy.c:fd_unlock_tgid
Unexecuted instantiation: stats.c:fd_unlock_tgid
Unexecuted instantiation: stick_table.c:fd_unlock_tgid
Unexecuted instantiation: stream.c:fd_unlock_tgid
Unexecuted instantiation: task.c:fd_unlock_tgid
Unexecuted instantiation: tcp_rules.c:fd_unlock_tgid
Unexecuted instantiation: tcpcheck.c:fd_unlock_tgid
Unexecuted instantiation: thread.c:fd_unlock_tgid
Unexecuted instantiation: tools.c:fd_unlock_tgid
Unexecuted instantiation: trace.c:fd_unlock_tgid
Unexecuted instantiation: vars.c:fd_unlock_tgid
Unexecuted instantiation: action.c:fd_unlock_tgid
Unexecuted instantiation: activity.c:fd_unlock_tgid
Unexecuted instantiation: applet.c:fd_unlock_tgid
Unexecuted instantiation: backend.c:fd_unlock_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_unlock_tgid
Unexecuted instantiation: cfgparse.c:fd_unlock_tgid
Unexecuted instantiation: channel.c:fd_unlock_tgid
Unexecuted instantiation: check.c:fd_unlock_tgid
Unexecuted instantiation: cli.c:fd_unlock_tgid
Unexecuted instantiation: connection.c:fd_unlock_tgid
Unexecuted instantiation: debug.c:fd_unlock_tgid
Unexecuted instantiation: dgram.c:fd_unlock_tgid
Unexecuted instantiation: dns.c:fd_unlock_tgid
Unexecuted instantiation: dns_ring.c:fd_unlock_tgid
Unexecuted instantiation: errors.c:fd_unlock_tgid
Unexecuted instantiation: event_hdl.c:fd_unlock_tgid
Unexecuted instantiation: extcheck.c:fd_unlock_tgid
Unexecuted instantiation: fd.c:fd_unlock_tgid
Unexecuted instantiation: filters.c:fd_unlock_tgid
Unexecuted instantiation: flt_decomp.c:fd_unlock_tgid
Unexecuted instantiation: flt_http_comp.c:fd_unlock_tgid
Unexecuted instantiation: frontend.c:fd_unlock_tgid
Unexecuted instantiation: haterm.c:fd_unlock_tgid
Unexecuted instantiation: http_ana.c:fd_unlock_tgid
Unexecuted instantiation: http_ext.c:fd_unlock_tgid
Unexecuted instantiation: http_htx.c:fd_unlock_tgid
Unexecuted instantiation: http_rules.c:fd_unlock_tgid
Unexecuted instantiation: lb_chash.c:fd_unlock_tgid
Unexecuted instantiation: lb_fwlc.c:fd_unlock_tgid
Unexecuted instantiation: limits.c:fd_unlock_tgid
Unexecuted instantiation: mailers.c:fd_unlock_tgid
Unexecuted instantiation: mux_spop.c:fd_unlock_tgid
Unexecuted instantiation: pattern.c:fd_unlock_tgid
Unexecuted instantiation: payload.c:fd_unlock_tgid
Unexecuted instantiation: proto_rhttp.c:fd_unlock_tgid
Unexecuted instantiation: queue.c:fd_unlock_tgid
Unexecuted instantiation: stats-file.c:fd_unlock_tgid
Unexecuted instantiation: stats-html.c:fd_unlock_tgid
Unexecuted instantiation: stats-json.c:fd_unlock_tgid
Unexecuted instantiation: stconn.c:fd_unlock_tgid
Unexecuted instantiation: cache.c:fd_unlock_tgid
Unexecuted instantiation: cfgparse-global.c:fd_unlock_tgid
Unexecuted instantiation: compression.c:fd_unlock_tgid
Unexecuted instantiation: fcgi-app.c:fd_unlock_tgid
Unexecuted instantiation: flt_spoe.c:fd_unlock_tgid
Unexecuted instantiation: http_fetch.c:fd_unlock_tgid
Unexecuted instantiation: proto_tcp.c:fd_unlock_tgid
354
355
/* Switch the FD's TGID to the new value with a refcount of 1 and the lock bit
356
 * set. It doesn't care about the current TGID, except that it will wait for
357
 * the FD not to be already switching and having its refcount cleared. After
358
 * the function returns, the caller is free to manipulate the masks, and it
359
 * must call fd_unlock_tgid() to drop the lock, allowing threads from the
360
 * designated group to use the FD. Finally a call to fd_drop_tgid() will be
361
 * needed to drop the reference.
362
 */
363
static inline void fd_lock_tgid(int fd, uint desired_tgid)
364
0
{
365
0
  uint old;
366
367
0
  BUG_ON(!desired_tgid);
368
369
0
  old = tgid;  // assume we start from the caller's tgid
370
0
  desired_tgid |= 0x18000; // refcount=1, lock bit=1.
371
372
0
  while (1) {
373
0
    old &= 0x7fff; // expect no lock and refcount==0
374
0
    if (_HA_ATOMIC_CAS(&fdtab[fd].refc_tgid, &old, desired_tgid))
375
0
      break;
376
0
    __ha_cpu_relax();
377
0
  }
378
0
}
Unexecuted instantiation: haproxy.c:fd_lock_tgid
Unexecuted instantiation: listener.c:fd_lock_tgid
Unexecuted instantiation: log.c:fd_lock_tgid
Unexecuted instantiation: mworker.c:fd_lock_tgid
Unexecuted instantiation: peers.c:fd_lock_tgid
Unexecuted instantiation: pool.c:fd_lock_tgid
Unexecuted instantiation: proto_sockpair.c:fd_lock_tgid
Unexecuted instantiation: protocol.c:fd_lock_tgid
Unexecuted instantiation: proxy.c:fd_lock_tgid
Unexecuted instantiation: resolvers.c:fd_lock_tgid
Unexecuted instantiation: ring.c:fd_lock_tgid
Unexecuted instantiation: sample.c:fd_lock_tgid
Unexecuted instantiation: server.c:fd_lock_tgid
Unexecuted instantiation: session.c:fd_lock_tgid
Unexecuted instantiation: signal.c:fd_lock_tgid
Unexecuted instantiation: sink.c:fd_lock_tgid
Unexecuted instantiation: sock.c:fd_lock_tgid
Unexecuted instantiation: sock_inet.c:fd_lock_tgid
Unexecuted instantiation: stats-proxy.c:fd_lock_tgid
Unexecuted instantiation: stats.c:fd_lock_tgid
Unexecuted instantiation: stick_table.c:fd_lock_tgid
Unexecuted instantiation: stream.c:fd_lock_tgid
Unexecuted instantiation: task.c:fd_lock_tgid
Unexecuted instantiation: tcp_rules.c:fd_lock_tgid
Unexecuted instantiation: tcpcheck.c:fd_lock_tgid
Unexecuted instantiation: thread.c:fd_lock_tgid
Unexecuted instantiation: tools.c:fd_lock_tgid
Unexecuted instantiation: trace.c:fd_lock_tgid
Unexecuted instantiation: vars.c:fd_lock_tgid
Unexecuted instantiation: action.c:fd_lock_tgid
Unexecuted instantiation: activity.c:fd_lock_tgid
Unexecuted instantiation: applet.c:fd_lock_tgid
Unexecuted instantiation: backend.c:fd_lock_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_lock_tgid
Unexecuted instantiation: cfgparse.c:fd_lock_tgid
Unexecuted instantiation: channel.c:fd_lock_tgid
Unexecuted instantiation: check.c:fd_lock_tgid
Unexecuted instantiation: cli.c:fd_lock_tgid
Unexecuted instantiation: connection.c:fd_lock_tgid
Unexecuted instantiation: debug.c:fd_lock_tgid
Unexecuted instantiation: dgram.c:fd_lock_tgid
Unexecuted instantiation: dns.c:fd_lock_tgid
Unexecuted instantiation: dns_ring.c:fd_lock_tgid
Unexecuted instantiation: errors.c:fd_lock_tgid
Unexecuted instantiation: event_hdl.c:fd_lock_tgid
Unexecuted instantiation: extcheck.c:fd_lock_tgid
Unexecuted instantiation: fd.c:fd_lock_tgid
Unexecuted instantiation: filters.c:fd_lock_tgid
Unexecuted instantiation: flt_decomp.c:fd_lock_tgid
Unexecuted instantiation: flt_http_comp.c:fd_lock_tgid
Unexecuted instantiation: frontend.c:fd_lock_tgid
Unexecuted instantiation: haterm.c:fd_lock_tgid
Unexecuted instantiation: http_ana.c:fd_lock_tgid
Unexecuted instantiation: http_ext.c:fd_lock_tgid
Unexecuted instantiation: http_htx.c:fd_lock_tgid
Unexecuted instantiation: http_rules.c:fd_lock_tgid
Unexecuted instantiation: lb_chash.c:fd_lock_tgid
Unexecuted instantiation: lb_fwlc.c:fd_lock_tgid
Unexecuted instantiation: limits.c:fd_lock_tgid
Unexecuted instantiation: mailers.c:fd_lock_tgid
Unexecuted instantiation: mux_spop.c:fd_lock_tgid
Unexecuted instantiation: pattern.c:fd_lock_tgid
Unexecuted instantiation: payload.c:fd_lock_tgid
Unexecuted instantiation: proto_rhttp.c:fd_lock_tgid
Unexecuted instantiation: queue.c:fd_lock_tgid
Unexecuted instantiation: stats-file.c:fd_lock_tgid
Unexecuted instantiation: stats-html.c:fd_lock_tgid
Unexecuted instantiation: stats-json.c:fd_lock_tgid
Unexecuted instantiation: stconn.c:fd_lock_tgid
Unexecuted instantiation: cache.c:fd_lock_tgid
Unexecuted instantiation: cfgparse-global.c:fd_lock_tgid
Unexecuted instantiation: compression.c:fd_lock_tgid
Unexecuted instantiation: fcgi-app.c:fd_lock_tgid
Unexecuted instantiation: flt_spoe.c:fd_lock_tgid
Unexecuted instantiation: http_fetch.c:fd_lock_tgid
Unexecuted instantiation: proto_tcp.c:fd_lock_tgid
379
380
/*
381
 * Try to lock the tgid, keeping the current tgid value.
382
 * Returns 1 on success, or 0 on failure.
383
 */
384
static inline int fd_lock_tgid_cur(int fd)
385
0
{
386
0
  uint old = _HA_ATOMIC_LOAD(&fdtab[fd].refc_tgid) & 0x7fff;
387
388
0
  if (_HA_ATOMIC_CAS(&fdtab[fd].refc_tgid, &old, (old | 0x8000) + 0x10000))
389
0
    return 1;
390
0
  return 0;
391
0
}
Unexecuted instantiation: haproxy.c:fd_lock_tgid_cur
Unexecuted instantiation: listener.c:fd_lock_tgid_cur
Unexecuted instantiation: log.c:fd_lock_tgid_cur
Unexecuted instantiation: mworker.c:fd_lock_tgid_cur
Unexecuted instantiation: peers.c:fd_lock_tgid_cur
Unexecuted instantiation: pool.c:fd_lock_tgid_cur
Unexecuted instantiation: proto_sockpair.c:fd_lock_tgid_cur
Unexecuted instantiation: protocol.c:fd_lock_tgid_cur
Unexecuted instantiation: proxy.c:fd_lock_tgid_cur
Unexecuted instantiation: resolvers.c:fd_lock_tgid_cur
Unexecuted instantiation: ring.c:fd_lock_tgid_cur
Unexecuted instantiation: sample.c:fd_lock_tgid_cur
Unexecuted instantiation: server.c:fd_lock_tgid_cur
Unexecuted instantiation: session.c:fd_lock_tgid_cur
Unexecuted instantiation: signal.c:fd_lock_tgid_cur
Unexecuted instantiation: sink.c:fd_lock_tgid_cur
Unexecuted instantiation: sock.c:fd_lock_tgid_cur
Unexecuted instantiation: sock_inet.c:fd_lock_tgid_cur
Unexecuted instantiation: stats-proxy.c:fd_lock_tgid_cur
Unexecuted instantiation: stats.c:fd_lock_tgid_cur
Unexecuted instantiation: stick_table.c:fd_lock_tgid_cur
Unexecuted instantiation: stream.c:fd_lock_tgid_cur
Unexecuted instantiation: task.c:fd_lock_tgid_cur
Unexecuted instantiation: tcp_rules.c:fd_lock_tgid_cur
Unexecuted instantiation: tcpcheck.c:fd_lock_tgid_cur
Unexecuted instantiation: thread.c:fd_lock_tgid_cur
Unexecuted instantiation: tools.c:fd_lock_tgid_cur
Unexecuted instantiation: trace.c:fd_lock_tgid_cur
Unexecuted instantiation: vars.c:fd_lock_tgid_cur
Unexecuted instantiation: action.c:fd_lock_tgid_cur
Unexecuted instantiation: activity.c:fd_lock_tgid_cur
Unexecuted instantiation: applet.c:fd_lock_tgid_cur
Unexecuted instantiation: backend.c:fd_lock_tgid_cur
Unexecuted instantiation: cfgparse-listen.c:fd_lock_tgid_cur
Unexecuted instantiation: cfgparse.c:fd_lock_tgid_cur
Unexecuted instantiation: channel.c:fd_lock_tgid_cur
Unexecuted instantiation: check.c:fd_lock_tgid_cur
Unexecuted instantiation: cli.c:fd_lock_tgid_cur
Unexecuted instantiation: connection.c:fd_lock_tgid_cur
Unexecuted instantiation: debug.c:fd_lock_tgid_cur
Unexecuted instantiation: dgram.c:fd_lock_tgid_cur
Unexecuted instantiation: dns.c:fd_lock_tgid_cur
Unexecuted instantiation: dns_ring.c:fd_lock_tgid_cur
Unexecuted instantiation: errors.c:fd_lock_tgid_cur
Unexecuted instantiation: event_hdl.c:fd_lock_tgid_cur
Unexecuted instantiation: extcheck.c:fd_lock_tgid_cur
Unexecuted instantiation: fd.c:fd_lock_tgid_cur
Unexecuted instantiation: filters.c:fd_lock_tgid_cur
Unexecuted instantiation: flt_decomp.c:fd_lock_tgid_cur
Unexecuted instantiation: flt_http_comp.c:fd_lock_tgid_cur
Unexecuted instantiation: frontend.c:fd_lock_tgid_cur
Unexecuted instantiation: haterm.c:fd_lock_tgid_cur
Unexecuted instantiation: http_ana.c:fd_lock_tgid_cur
Unexecuted instantiation: http_ext.c:fd_lock_tgid_cur
Unexecuted instantiation: http_htx.c:fd_lock_tgid_cur
Unexecuted instantiation: http_rules.c:fd_lock_tgid_cur
Unexecuted instantiation: lb_chash.c:fd_lock_tgid_cur
Unexecuted instantiation: lb_fwlc.c:fd_lock_tgid_cur
Unexecuted instantiation: limits.c:fd_lock_tgid_cur
Unexecuted instantiation: mailers.c:fd_lock_tgid_cur
Unexecuted instantiation: mux_spop.c:fd_lock_tgid_cur
Unexecuted instantiation: pattern.c:fd_lock_tgid_cur
Unexecuted instantiation: payload.c:fd_lock_tgid_cur
Unexecuted instantiation: proto_rhttp.c:fd_lock_tgid_cur
Unexecuted instantiation: queue.c:fd_lock_tgid_cur
Unexecuted instantiation: stats-file.c:fd_lock_tgid_cur
Unexecuted instantiation: stats-html.c:fd_lock_tgid_cur
Unexecuted instantiation: stats-json.c:fd_lock_tgid_cur
Unexecuted instantiation: stconn.c:fd_lock_tgid_cur
Unexecuted instantiation: cache.c:fd_lock_tgid_cur
Unexecuted instantiation: cfgparse-global.c:fd_lock_tgid_cur
Unexecuted instantiation: compression.c:fd_lock_tgid_cur
Unexecuted instantiation: fcgi-app.c:fd_lock_tgid_cur
Unexecuted instantiation: flt_spoe.c:fd_lock_tgid_cur
Unexecuted instantiation: http_fetch.c:fd_lock_tgid_cur
Unexecuted instantiation: proto_tcp.c:fd_lock_tgid_cur
392
393
394
/* Grab a reference to the FD's TGID, and return the tgid. Note that a TGID of
395
 * zero indicates the FD was closed, thus also fails (i.e. no need to drop it).
396
 * On non-zero (success), the caller must release it using fd_drop_tgid().
397
 */
398
static inline uint fd_take_tgid(int fd)
399
0
{
400
0
  uint old;
401
402
0
  old = _HA_ATOMIC_FETCH_ADD(&fdtab[fd].refc_tgid, 0x10000) & 0xffff;
403
0
  while (old & 0x8000) {
404
0
                old = _HA_ATOMIC_LOAD(&fdtab[fd].refc_tgid) & 0xffff;
405
0
                __ha_cpu_relax();
406
0
  }
407
0
  if (likely(old))
408
0
    return old;
409
0
  HA_ATOMIC_SUB(&fdtab[fd].refc_tgid, 0x10000);
410
0
  return 0;
411
0
}
Unexecuted instantiation: haproxy.c:fd_take_tgid
Unexecuted instantiation: listener.c:fd_take_tgid
Unexecuted instantiation: log.c:fd_take_tgid
Unexecuted instantiation: mworker.c:fd_take_tgid
Unexecuted instantiation: peers.c:fd_take_tgid
Unexecuted instantiation: pool.c:fd_take_tgid
Unexecuted instantiation: proto_sockpair.c:fd_take_tgid
Unexecuted instantiation: protocol.c:fd_take_tgid
Unexecuted instantiation: proxy.c:fd_take_tgid
Unexecuted instantiation: resolvers.c:fd_take_tgid
Unexecuted instantiation: ring.c:fd_take_tgid
Unexecuted instantiation: sample.c:fd_take_tgid
Unexecuted instantiation: server.c:fd_take_tgid
Unexecuted instantiation: session.c:fd_take_tgid
Unexecuted instantiation: signal.c:fd_take_tgid
Unexecuted instantiation: sink.c:fd_take_tgid
Unexecuted instantiation: sock.c:fd_take_tgid
Unexecuted instantiation: sock_inet.c:fd_take_tgid
Unexecuted instantiation: stats-proxy.c:fd_take_tgid
Unexecuted instantiation: stats.c:fd_take_tgid
Unexecuted instantiation: stick_table.c:fd_take_tgid
Unexecuted instantiation: stream.c:fd_take_tgid
Unexecuted instantiation: task.c:fd_take_tgid
Unexecuted instantiation: tcp_rules.c:fd_take_tgid
Unexecuted instantiation: tcpcheck.c:fd_take_tgid
Unexecuted instantiation: thread.c:fd_take_tgid
Unexecuted instantiation: tools.c:fd_take_tgid
Unexecuted instantiation: trace.c:fd_take_tgid
Unexecuted instantiation: vars.c:fd_take_tgid
Unexecuted instantiation: action.c:fd_take_tgid
Unexecuted instantiation: activity.c:fd_take_tgid
Unexecuted instantiation: applet.c:fd_take_tgid
Unexecuted instantiation: backend.c:fd_take_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_take_tgid
Unexecuted instantiation: cfgparse.c:fd_take_tgid
Unexecuted instantiation: channel.c:fd_take_tgid
Unexecuted instantiation: check.c:fd_take_tgid
Unexecuted instantiation: cli.c:fd_take_tgid
Unexecuted instantiation: connection.c:fd_take_tgid
Unexecuted instantiation: debug.c:fd_take_tgid
Unexecuted instantiation: dgram.c:fd_take_tgid
Unexecuted instantiation: dns.c:fd_take_tgid
Unexecuted instantiation: dns_ring.c:fd_take_tgid
Unexecuted instantiation: errors.c:fd_take_tgid
Unexecuted instantiation: event_hdl.c:fd_take_tgid
Unexecuted instantiation: extcheck.c:fd_take_tgid
Unexecuted instantiation: fd.c:fd_take_tgid
Unexecuted instantiation: filters.c:fd_take_tgid
Unexecuted instantiation: flt_decomp.c:fd_take_tgid
Unexecuted instantiation: flt_http_comp.c:fd_take_tgid
Unexecuted instantiation: frontend.c:fd_take_tgid
Unexecuted instantiation: haterm.c:fd_take_tgid
Unexecuted instantiation: http_ana.c:fd_take_tgid
Unexecuted instantiation: http_ext.c:fd_take_tgid
Unexecuted instantiation: http_htx.c:fd_take_tgid
Unexecuted instantiation: http_rules.c:fd_take_tgid
Unexecuted instantiation: lb_chash.c:fd_take_tgid
Unexecuted instantiation: lb_fwlc.c:fd_take_tgid
Unexecuted instantiation: limits.c:fd_take_tgid
Unexecuted instantiation: mailers.c:fd_take_tgid
Unexecuted instantiation: mux_spop.c:fd_take_tgid
Unexecuted instantiation: pattern.c:fd_take_tgid
Unexecuted instantiation: payload.c:fd_take_tgid
Unexecuted instantiation: proto_rhttp.c:fd_take_tgid
Unexecuted instantiation: queue.c:fd_take_tgid
Unexecuted instantiation: stats-file.c:fd_take_tgid
Unexecuted instantiation: stats-html.c:fd_take_tgid
Unexecuted instantiation: stats-json.c:fd_take_tgid
Unexecuted instantiation: stconn.c:fd_take_tgid
Unexecuted instantiation: cache.c:fd_take_tgid
Unexecuted instantiation: cfgparse-global.c:fd_take_tgid
Unexecuted instantiation: compression.c:fd_take_tgid
Unexecuted instantiation: fcgi-app.c:fd_take_tgid
Unexecuted instantiation: flt_spoe.c:fd_take_tgid
Unexecuted instantiation: http_fetch.c:fd_take_tgid
Unexecuted instantiation: proto_tcp.c:fd_take_tgid
412
413
/* Reset a tgid without affecting the refcount */
414
static forceinline void fd_reset_tgid(int fd)
415
0
{
416
0
  HA_ATOMIC_AND(&fdtab[fd].refc_tgid, 0xffff0000U);
417
0
}
Unexecuted instantiation: haproxy.c:fd_reset_tgid
Unexecuted instantiation: listener.c:fd_reset_tgid
Unexecuted instantiation: log.c:fd_reset_tgid
Unexecuted instantiation: mworker.c:fd_reset_tgid
Unexecuted instantiation: peers.c:fd_reset_tgid
Unexecuted instantiation: pool.c:fd_reset_tgid
Unexecuted instantiation: proto_sockpair.c:fd_reset_tgid
Unexecuted instantiation: protocol.c:fd_reset_tgid
Unexecuted instantiation: proxy.c:fd_reset_tgid
Unexecuted instantiation: resolvers.c:fd_reset_tgid
Unexecuted instantiation: ring.c:fd_reset_tgid
Unexecuted instantiation: sample.c:fd_reset_tgid
Unexecuted instantiation: server.c:fd_reset_tgid
Unexecuted instantiation: session.c:fd_reset_tgid
Unexecuted instantiation: signal.c:fd_reset_tgid
Unexecuted instantiation: sink.c:fd_reset_tgid
Unexecuted instantiation: sock.c:fd_reset_tgid
Unexecuted instantiation: sock_inet.c:fd_reset_tgid
Unexecuted instantiation: stats-proxy.c:fd_reset_tgid
Unexecuted instantiation: stats.c:fd_reset_tgid
Unexecuted instantiation: stick_table.c:fd_reset_tgid
Unexecuted instantiation: stream.c:fd_reset_tgid
Unexecuted instantiation: task.c:fd_reset_tgid
Unexecuted instantiation: tcp_rules.c:fd_reset_tgid
Unexecuted instantiation: tcpcheck.c:fd_reset_tgid
Unexecuted instantiation: thread.c:fd_reset_tgid
Unexecuted instantiation: tools.c:fd_reset_tgid
Unexecuted instantiation: trace.c:fd_reset_tgid
Unexecuted instantiation: vars.c:fd_reset_tgid
Unexecuted instantiation: action.c:fd_reset_tgid
Unexecuted instantiation: activity.c:fd_reset_tgid
Unexecuted instantiation: applet.c:fd_reset_tgid
Unexecuted instantiation: backend.c:fd_reset_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_reset_tgid
Unexecuted instantiation: cfgparse.c:fd_reset_tgid
Unexecuted instantiation: channel.c:fd_reset_tgid
Unexecuted instantiation: check.c:fd_reset_tgid
Unexecuted instantiation: cli.c:fd_reset_tgid
Unexecuted instantiation: connection.c:fd_reset_tgid
Unexecuted instantiation: debug.c:fd_reset_tgid
Unexecuted instantiation: dgram.c:fd_reset_tgid
Unexecuted instantiation: dns.c:fd_reset_tgid
Unexecuted instantiation: dns_ring.c:fd_reset_tgid
Unexecuted instantiation: errors.c:fd_reset_tgid
Unexecuted instantiation: event_hdl.c:fd_reset_tgid
Unexecuted instantiation: extcheck.c:fd_reset_tgid
Unexecuted instantiation: fd.c:fd_reset_tgid
Unexecuted instantiation: filters.c:fd_reset_tgid
Unexecuted instantiation: flt_decomp.c:fd_reset_tgid
Unexecuted instantiation: flt_http_comp.c:fd_reset_tgid
Unexecuted instantiation: frontend.c:fd_reset_tgid
Unexecuted instantiation: haterm.c:fd_reset_tgid
Unexecuted instantiation: http_ana.c:fd_reset_tgid
Unexecuted instantiation: http_ext.c:fd_reset_tgid
Unexecuted instantiation: http_htx.c:fd_reset_tgid
Unexecuted instantiation: http_rules.c:fd_reset_tgid
Unexecuted instantiation: lb_chash.c:fd_reset_tgid
Unexecuted instantiation: lb_fwlc.c:fd_reset_tgid
Unexecuted instantiation: limits.c:fd_reset_tgid
Unexecuted instantiation: mailers.c:fd_reset_tgid
Unexecuted instantiation: mux_spop.c:fd_reset_tgid
Unexecuted instantiation: pattern.c:fd_reset_tgid
Unexecuted instantiation: payload.c:fd_reset_tgid
Unexecuted instantiation: proto_rhttp.c:fd_reset_tgid
Unexecuted instantiation: queue.c:fd_reset_tgid
Unexecuted instantiation: stats-file.c:fd_reset_tgid
Unexecuted instantiation: stats-html.c:fd_reset_tgid
Unexecuted instantiation: stats-json.c:fd_reset_tgid
Unexecuted instantiation: stconn.c:fd_reset_tgid
Unexecuted instantiation: cache.c:fd_reset_tgid
Unexecuted instantiation: cfgparse-global.c:fd_reset_tgid
Unexecuted instantiation: compression.c:fd_reset_tgid
Unexecuted instantiation: fcgi-app.c:fd_reset_tgid
Unexecuted instantiation: flt_spoe.c:fd_reset_tgid
Unexecuted instantiation: http_fetch.c:fd_reset_tgid
Unexecuted instantiation: proto_tcp.c:fd_reset_tgid
418
419
/* Try to grab a reference to the FD's TGID, but only if it matches the
420
 * requested one (i.e. it succeeds with TGID refcnt held, or fails). Note that
421
 * a TGID of zero indicates the FD was closed, thus also fails. It returns
422
 * non-zero on success, in which case the caller must then release it using
423
 * fd_drop_tgid(), or zero on failure. The function is optimized for use
424
 * when it's likely that the tgid matches the desired one as it's by far
425
 * the most common.
426
 */
427
static inline uint fd_grab_tgid(int fd, uint desired_tgid)
428
0
{
429
0
  uint old;
430
431
0
  old = _HA_ATOMIC_FETCH_ADD(&fdtab[fd].refc_tgid, 0x10000) & 0xffff;
432
  /* If the tgid is locked, wait until it no longer is */
433
0
  while (old & 0x8000) {
434
0
    old = _HA_ATOMIC_LOAD(&fdtab[fd].refc_tgid) & 0xffff;
435
0
    __ha_cpu_relax();
436
0
  }
437
0
  if (likely(old == desired_tgid))
438
0
    return 1;
439
0
  HA_ATOMIC_SUB(&fdtab[fd].refc_tgid, 0x10000);
440
0
  return 0;
441
0
}
Unexecuted instantiation: haproxy.c:fd_grab_tgid
Unexecuted instantiation: listener.c:fd_grab_tgid
Unexecuted instantiation: log.c:fd_grab_tgid
Unexecuted instantiation: mworker.c:fd_grab_tgid
Unexecuted instantiation: peers.c:fd_grab_tgid
Unexecuted instantiation: pool.c:fd_grab_tgid
Unexecuted instantiation: proto_sockpair.c:fd_grab_tgid
Unexecuted instantiation: protocol.c:fd_grab_tgid
Unexecuted instantiation: proxy.c:fd_grab_tgid
Unexecuted instantiation: resolvers.c:fd_grab_tgid
Unexecuted instantiation: ring.c:fd_grab_tgid
Unexecuted instantiation: sample.c:fd_grab_tgid
Unexecuted instantiation: server.c:fd_grab_tgid
Unexecuted instantiation: session.c:fd_grab_tgid
Unexecuted instantiation: signal.c:fd_grab_tgid
Unexecuted instantiation: sink.c:fd_grab_tgid
Unexecuted instantiation: sock.c:fd_grab_tgid
Unexecuted instantiation: sock_inet.c:fd_grab_tgid
Unexecuted instantiation: stats-proxy.c:fd_grab_tgid
Unexecuted instantiation: stats.c:fd_grab_tgid
Unexecuted instantiation: stick_table.c:fd_grab_tgid
Unexecuted instantiation: stream.c:fd_grab_tgid
Unexecuted instantiation: task.c:fd_grab_tgid
Unexecuted instantiation: tcp_rules.c:fd_grab_tgid
Unexecuted instantiation: tcpcheck.c:fd_grab_tgid
Unexecuted instantiation: thread.c:fd_grab_tgid
Unexecuted instantiation: tools.c:fd_grab_tgid
Unexecuted instantiation: trace.c:fd_grab_tgid
Unexecuted instantiation: vars.c:fd_grab_tgid
Unexecuted instantiation: action.c:fd_grab_tgid
Unexecuted instantiation: activity.c:fd_grab_tgid
Unexecuted instantiation: applet.c:fd_grab_tgid
Unexecuted instantiation: backend.c:fd_grab_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_grab_tgid
Unexecuted instantiation: cfgparse.c:fd_grab_tgid
Unexecuted instantiation: channel.c:fd_grab_tgid
Unexecuted instantiation: check.c:fd_grab_tgid
Unexecuted instantiation: cli.c:fd_grab_tgid
Unexecuted instantiation: connection.c:fd_grab_tgid
Unexecuted instantiation: debug.c:fd_grab_tgid
Unexecuted instantiation: dgram.c:fd_grab_tgid
Unexecuted instantiation: dns.c:fd_grab_tgid
Unexecuted instantiation: dns_ring.c:fd_grab_tgid
Unexecuted instantiation: errors.c:fd_grab_tgid
Unexecuted instantiation: event_hdl.c:fd_grab_tgid
Unexecuted instantiation: extcheck.c:fd_grab_tgid
Unexecuted instantiation: fd.c:fd_grab_tgid
Unexecuted instantiation: filters.c:fd_grab_tgid
Unexecuted instantiation: flt_decomp.c:fd_grab_tgid
Unexecuted instantiation: flt_http_comp.c:fd_grab_tgid
Unexecuted instantiation: frontend.c:fd_grab_tgid
Unexecuted instantiation: haterm.c:fd_grab_tgid
Unexecuted instantiation: http_ana.c:fd_grab_tgid
Unexecuted instantiation: http_ext.c:fd_grab_tgid
Unexecuted instantiation: http_htx.c:fd_grab_tgid
Unexecuted instantiation: http_rules.c:fd_grab_tgid
Unexecuted instantiation: lb_chash.c:fd_grab_tgid
Unexecuted instantiation: lb_fwlc.c:fd_grab_tgid
Unexecuted instantiation: limits.c:fd_grab_tgid
Unexecuted instantiation: mailers.c:fd_grab_tgid
Unexecuted instantiation: mux_spop.c:fd_grab_tgid
Unexecuted instantiation: pattern.c:fd_grab_tgid
Unexecuted instantiation: payload.c:fd_grab_tgid
Unexecuted instantiation: proto_rhttp.c:fd_grab_tgid
Unexecuted instantiation: queue.c:fd_grab_tgid
Unexecuted instantiation: stats-file.c:fd_grab_tgid
Unexecuted instantiation: stats-html.c:fd_grab_tgid
Unexecuted instantiation: stats-json.c:fd_grab_tgid
Unexecuted instantiation: stconn.c:fd_grab_tgid
Unexecuted instantiation: cache.c:fd_grab_tgid
Unexecuted instantiation: cfgparse-global.c:fd_grab_tgid
Unexecuted instantiation: compression.c:fd_grab_tgid
Unexecuted instantiation: fcgi-app.c:fd_grab_tgid
Unexecuted instantiation: flt_spoe.c:fd_grab_tgid
Unexecuted instantiation: http_fetch.c:fd_grab_tgid
Unexecuted instantiation: proto_tcp.c:fd_grab_tgid
442
443
/* Set the FD's TGID to the new value with a refcount of 1, waiting for the
444
 * current refcount to become 0, to cover the rare possibly that a late
445
 * competing thread would be touching the tgid or the running mask in parallel.
446
 * The caller must call fd_drop_tgid() once done.
447
 */
448
static inline void fd_claim_tgid(int fd, uint desired_tgid)
449
0
{
450
0
  uint old;
451
452
0
  BUG_ON(!desired_tgid);
453
454
0
  desired_tgid += 0x10000; // refcount=1
455
0
  old = 0;                 // assume unused (most likely)
456
0
  while (1) {
457
0
    if (_HA_ATOMIC_CAS(&fdtab[fd].refc_tgid, &old, desired_tgid))
458
0
      break;
459
0
    __ha_cpu_relax();
460
0
    old &= 0x7fff;   // keep only the tgid and drop the lock
461
0
  }
462
0
}
Unexecuted instantiation: haproxy.c:fd_claim_tgid
Unexecuted instantiation: listener.c:fd_claim_tgid
Unexecuted instantiation: log.c:fd_claim_tgid
Unexecuted instantiation: mworker.c:fd_claim_tgid
Unexecuted instantiation: peers.c:fd_claim_tgid
Unexecuted instantiation: pool.c:fd_claim_tgid
Unexecuted instantiation: proto_sockpair.c:fd_claim_tgid
Unexecuted instantiation: protocol.c:fd_claim_tgid
Unexecuted instantiation: proxy.c:fd_claim_tgid
Unexecuted instantiation: resolvers.c:fd_claim_tgid
Unexecuted instantiation: ring.c:fd_claim_tgid
Unexecuted instantiation: sample.c:fd_claim_tgid
Unexecuted instantiation: server.c:fd_claim_tgid
Unexecuted instantiation: session.c:fd_claim_tgid
Unexecuted instantiation: signal.c:fd_claim_tgid
Unexecuted instantiation: sink.c:fd_claim_tgid
Unexecuted instantiation: sock.c:fd_claim_tgid
Unexecuted instantiation: sock_inet.c:fd_claim_tgid
Unexecuted instantiation: stats-proxy.c:fd_claim_tgid
Unexecuted instantiation: stats.c:fd_claim_tgid
Unexecuted instantiation: stick_table.c:fd_claim_tgid
Unexecuted instantiation: stream.c:fd_claim_tgid
Unexecuted instantiation: task.c:fd_claim_tgid
Unexecuted instantiation: tcp_rules.c:fd_claim_tgid
Unexecuted instantiation: tcpcheck.c:fd_claim_tgid
Unexecuted instantiation: thread.c:fd_claim_tgid
Unexecuted instantiation: tools.c:fd_claim_tgid
Unexecuted instantiation: trace.c:fd_claim_tgid
Unexecuted instantiation: vars.c:fd_claim_tgid
Unexecuted instantiation: action.c:fd_claim_tgid
Unexecuted instantiation: activity.c:fd_claim_tgid
Unexecuted instantiation: applet.c:fd_claim_tgid
Unexecuted instantiation: backend.c:fd_claim_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_claim_tgid
Unexecuted instantiation: cfgparse.c:fd_claim_tgid
Unexecuted instantiation: channel.c:fd_claim_tgid
Unexecuted instantiation: check.c:fd_claim_tgid
Unexecuted instantiation: cli.c:fd_claim_tgid
Unexecuted instantiation: connection.c:fd_claim_tgid
Unexecuted instantiation: debug.c:fd_claim_tgid
Unexecuted instantiation: dgram.c:fd_claim_tgid
Unexecuted instantiation: dns.c:fd_claim_tgid
Unexecuted instantiation: dns_ring.c:fd_claim_tgid
Unexecuted instantiation: errors.c:fd_claim_tgid
Unexecuted instantiation: event_hdl.c:fd_claim_tgid
Unexecuted instantiation: extcheck.c:fd_claim_tgid
Unexecuted instantiation: fd.c:fd_claim_tgid
Unexecuted instantiation: filters.c:fd_claim_tgid
Unexecuted instantiation: flt_decomp.c:fd_claim_tgid
Unexecuted instantiation: flt_http_comp.c:fd_claim_tgid
Unexecuted instantiation: frontend.c:fd_claim_tgid
Unexecuted instantiation: haterm.c:fd_claim_tgid
Unexecuted instantiation: http_ana.c:fd_claim_tgid
Unexecuted instantiation: http_ext.c:fd_claim_tgid
Unexecuted instantiation: http_htx.c:fd_claim_tgid
Unexecuted instantiation: http_rules.c:fd_claim_tgid
Unexecuted instantiation: lb_chash.c:fd_claim_tgid
Unexecuted instantiation: lb_fwlc.c:fd_claim_tgid
Unexecuted instantiation: limits.c:fd_claim_tgid
Unexecuted instantiation: mailers.c:fd_claim_tgid
Unexecuted instantiation: mux_spop.c:fd_claim_tgid
Unexecuted instantiation: pattern.c:fd_claim_tgid
Unexecuted instantiation: payload.c:fd_claim_tgid
Unexecuted instantiation: proto_rhttp.c:fd_claim_tgid
Unexecuted instantiation: queue.c:fd_claim_tgid
Unexecuted instantiation: stats-file.c:fd_claim_tgid
Unexecuted instantiation: stats-html.c:fd_claim_tgid
Unexecuted instantiation: stats-json.c:fd_claim_tgid
Unexecuted instantiation: stconn.c:fd_claim_tgid
Unexecuted instantiation: cache.c:fd_claim_tgid
Unexecuted instantiation: cfgparse-global.c:fd_claim_tgid
Unexecuted instantiation: compression.c:fd_claim_tgid
Unexecuted instantiation: fcgi-app.c:fd_claim_tgid
Unexecuted instantiation: flt_spoe.c:fd_claim_tgid
Unexecuted instantiation: http_fetch.c:fd_claim_tgid
Unexecuted instantiation: proto_tcp.c:fd_claim_tgid
463
464
/*
465
 * Update the FD's TGID.
466
 * This should be called with the lock held, and will drop the lock once
467
 * the TGID is updated.
468
 * The reference counter is however preserved.
469
 */
470
static inline void fd_update_tgid(int fd, uint desired_tgid)
471
0
{
472
0
  unsigned int orig_tgid = fdtab[fd].refc_tgid;
473
0
  unsigned int new_tgid;
474
  /* Remove the lock, and switch to the new tgid */
475
0
  do {
476
0
    new_tgid = (orig_tgid & 0xffff0000) | desired_tgid;
477
0
  } while (!_HA_ATOMIC_CAS(&fdtab[fd].refc_tgid, &orig_tgid, new_tgid) && __ha_cpu_relax());
478
0
}
Unexecuted instantiation: haproxy.c:fd_update_tgid
Unexecuted instantiation: listener.c:fd_update_tgid
Unexecuted instantiation: log.c:fd_update_tgid
Unexecuted instantiation: mworker.c:fd_update_tgid
Unexecuted instantiation: peers.c:fd_update_tgid
Unexecuted instantiation: pool.c:fd_update_tgid
Unexecuted instantiation: proto_sockpair.c:fd_update_tgid
Unexecuted instantiation: protocol.c:fd_update_tgid
Unexecuted instantiation: proxy.c:fd_update_tgid
Unexecuted instantiation: resolvers.c:fd_update_tgid
Unexecuted instantiation: ring.c:fd_update_tgid
Unexecuted instantiation: sample.c:fd_update_tgid
Unexecuted instantiation: server.c:fd_update_tgid
Unexecuted instantiation: session.c:fd_update_tgid
Unexecuted instantiation: signal.c:fd_update_tgid
Unexecuted instantiation: sink.c:fd_update_tgid
Unexecuted instantiation: sock.c:fd_update_tgid
Unexecuted instantiation: sock_inet.c:fd_update_tgid
Unexecuted instantiation: stats-proxy.c:fd_update_tgid
Unexecuted instantiation: stats.c:fd_update_tgid
Unexecuted instantiation: stick_table.c:fd_update_tgid
Unexecuted instantiation: stream.c:fd_update_tgid
Unexecuted instantiation: task.c:fd_update_tgid
Unexecuted instantiation: tcp_rules.c:fd_update_tgid
Unexecuted instantiation: tcpcheck.c:fd_update_tgid
Unexecuted instantiation: thread.c:fd_update_tgid
Unexecuted instantiation: tools.c:fd_update_tgid
Unexecuted instantiation: trace.c:fd_update_tgid
Unexecuted instantiation: vars.c:fd_update_tgid
Unexecuted instantiation: action.c:fd_update_tgid
Unexecuted instantiation: activity.c:fd_update_tgid
Unexecuted instantiation: applet.c:fd_update_tgid
Unexecuted instantiation: backend.c:fd_update_tgid
Unexecuted instantiation: cfgparse-listen.c:fd_update_tgid
Unexecuted instantiation: cfgparse.c:fd_update_tgid
Unexecuted instantiation: channel.c:fd_update_tgid
Unexecuted instantiation: check.c:fd_update_tgid
Unexecuted instantiation: cli.c:fd_update_tgid
Unexecuted instantiation: connection.c:fd_update_tgid
Unexecuted instantiation: debug.c:fd_update_tgid
Unexecuted instantiation: dgram.c:fd_update_tgid
Unexecuted instantiation: dns.c:fd_update_tgid
Unexecuted instantiation: dns_ring.c:fd_update_tgid
Unexecuted instantiation: errors.c:fd_update_tgid
Unexecuted instantiation: event_hdl.c:fd_update_tgid
Unexecuted instantiation: extcheck.c:fd_update_tgid
Unexecuted instantiation: fd.c:fd_update_tgid
Unexecuted instantiation: filters.c:fd_update_tgid
Unexecuted instantiation: flt_decomp.c:fd_update_tgid
Unexecuted instantiation: flt_http_comp.c:fd_update_tgid
Unexecuted instantiation: frontend.c:fd_update_tgid
Unexecuted instantiation: haterm.c:fd_update_tgid
Unexecuted instantiation: http_ana.c:fd_update_tgid
Unexecuted instantiation: http_ext.c:fd_update_tgid
Unexecuted instantiation: http_htx.c:fd_update_tgid
Unexecuted instantiation: http_rules.c:fd_update_tgid
Unexecuted instantiation: lb_chash.c:fd_update_tgid
Unexecuted instantiation: lb_fwlc.c:fd_update_tgid
Unexecuted instantiation: limits.c:fd_update_tgid
Unexecuted instantiation: mailers.c:fd_update_tgid
Unexecuted instantiation: mux_spop.c:fd_update_tgid
Unexecuted instantiation: pattern.c:fd_update_tgid
Unexecuted instantiation: payload.c:fd_update_tgid
Unexecuted instantiation: proto_rhttp.c:fd_update_tgid
Unexecuted instantiation: queue.c:fd_update_tgid
Unexecuted instantiation: stats-file.c:fd_update_tgid
Unexecuted instantiation: stats-html.c:fd_update_tgid
Unexecuted instantiation: stats-json.c:fd_update_tgid
Unexecuted instantiation: stconn.c:fd_update_tgid
Unexecuted instantiation: cache.c:fd_update_tgid
Unexecuted instantiation: cfgparse-global.c:fd_update_tgid
Unexecuted instantiation: compression.c:fd_update_tgid
Unexecuted instantiation: fcgi-app.c:fd_update_tgid
Unexecuted instantiation: flt_spoe.c:fd_update_tgid
Unexecuted instantiation: http_fetch.c:fd_update_tgid
Unexecuted instantiation: proto_tcp.c:fd_update_tgid
479
480
/* atomically read the running mask if the tgid matches, or returns zero if it
481
 * does not match. This is meant for use in code paths where the bit is expected
482
 * to be present and will be sufficient to protect against a short-term group
483
 * migration (e.g. takss and return from iocb).
484
 */
485
static inline ulong fd_get_running(int fd, uint desired_tgid)
486
0
{
487
0
  ulong ret = 0;
488
0
  uint old;
489
0
490
0
  /* TODO: may also be checked using an atomic double-load from a DWCAS
491
0
   * on compatible architectures, which wouldn't require to modify nor
492
0
   * restore the original value.
493
0
   */
494
0
  old = _HA_ATOMIC_ADD_FETCH(&fdtab[fd].refc_tgid, 0x10000);
495
0
  if (likely((old & 0xffff) == desired_tgid))
496
0
    ret = _HA_ATOMIC_LOAD(&fdtab[fd].running_mask);
497
0
  _HA_ATOMIC_SUB(&fdtab[fd].refc_tgid, 0x10000);
498
0
  return ret;
499
0
}
Unexecuted instantiation: haproxy.c:fd_get_running
Unexecuted instantiation: listener.c:fd_get_running
Unexecuted instantiation: log.c:fd_get_running
Unexecuted instantiation: mworker.c:fd_get_running
Unexecuted instantiation: peers.c:fd_get_running
Unexecuted instantiation: pool.c:fd_get_running
Unexecuted instantiation: proto_sockpair.c:fd_get_running
Unexecuted instantiation: protocol.c:fd_get_running
Unexecuted instantiation: proxy.c:fd_get_running
Unexecuted instantiation: resolvers.c:fd_get_running
Unexecuted instantiation: ring.c:fd_get_running
Unexecuted instantiation: sample.c:fd_get_running
Unexecuted instantiation: server.c:fd_get_running
Unexecuted instantiation: session.c:fd_get_running
Unexecuted instantiation: signal.c:fd_get_running
Unexecuted instantiation: sink.c:fd_get_running
Unexecuted instantiation: sock.c:fd_get_running
Unexecuted instantiation: sock_inet.c:fd_get_running
Unexecuted instantiation: stats-proxy.c:fd_get_running
Unexecuted instantiation: stats.c:fd_get_running
Unexecuted instantiation: stick_table.c:fd_get_running
Unexecuted instantiation: stream.c:fd_get_running
Unexecuted instantiation: task.c:fd_get_running
Unexecuted instantiation: tcp_rules.c:fd_get_running
Unexecuted instantiation: tcpcheck.c:fd_get_running
Unexecuted instantiation: thread.c:fd_get_running
Unexecuted instantiation: tools.c:fd_get_running
Unexecuted instantiation: trace.c:fd_get_running
Unexecuted instantiation: vars.c:fd_get_running
Unexecuted instantiation: action.c:fd_get_running
Unexecuted instantiation: activity.c:fd_get_running
Unexecuted instantiation: applet.c:fd_get_running
Unexecuted instantiation: backend.c:fd_get_running
Unexecuted instantiation: cfgparse-listen.c:fd_get_running
Unexecuted instantiation: cfgparse.c:fd_get_running
Unexecuted instantiation: channel.c:fd_get_running
Unexecuted instantiation: check.c:fd_get_running
Unexecuted instantiation: cli.c:fd_get_running
Unexecuted instantiation: connection.c:fd_get_running
Unexecuted instantiation: debug.c:fd_get_running
Unexecuted instantiation: dgram.c:fd_get_running
Unexecuted instantiation: dns.c:fd_get_running
Unexecuted instantiation: dns_ring.c:fd_get_running
Unexecuted instantiation: errors.c:fd_get_running
Unexecuted instantiation: event_hdl.c:fd_get_running
Unexecuted instantiation: extcheck.c:fd_get_running
Unexecuted instantiation: fd.c:fd_get_running
Unexecuted instantiation: filters.c:fd_get_running
Unexecuted instantiation: flt_decomp.c:fd_get_running
Unexecuted instantiation: flt_http_comp.c:fd_get_running
Unexecuted instantiation: frontend.c:fd_get_running
Unexecuted instantiation: haterm.c:fd_get_running
Unexecuted instantiation: http_ana.c:fd_get_running
Unexecuted instantiation: http_ext.c:fd_get_running
Unexecuted instantiation: http_htx.c:fd_get_running
Unexecuted instantiation: http_rules.c:fd_get_running
Unexecuted instantiation: lb_chash.c:fd_get_running
Unexecuted instantiation: lb_fwlc.c:fd_get_running
Unexecuted instantiation: limits.c:fd_get_running
Unexecuted instantiation: mailers.c:fd_get_running
Unexecuted instantiation: mux_spop.c:fd_get_running
Unexecuted instantiation: pattern.c:fd_get_running
Unexecuted instantiation: payload.c:fd_get_running
Unexecuted instantiation: proto_rhttp.c:fd_get_running
Unexecuted instantiation: queue.c:fd_get_running
Unexecuted instantiation: stats-file.c:fd_get_running
Unexecuted instantiation: stats-html.c:fd_get_running
Unexecuted instantiation: stats-json.c:fd_get_running
Unexecuted instantiation: stconn.c:fd_get_running
Unexecuted instantiation: cache.c:fd_get_running
Unexecuted instantiation: cfgparse-global.c:fd_get_running
Unexecuted instantiation: compression.c:fd_get_running
Unexecuted instantiation: fcgi-app.c:fd_get_running
Unexecuted instantiation: flt_spoe.c:fd_get_running
Unexecuted instantiation: http_fetch.c:fd_get_running
Unexecuted instantiation: proto_tcp.c:fd_get_running
500
501
/* remove tid_bit from the fd's running mask and returns the value before the
502
 * atomic operation, so that the caller can know if it was present.
503
 */
504
static inline long fd_clr_running(int fd)
505
0
{
506
0
  return _HA_ATOMIC_FETCH_AND(&fdtab[fd].running_mask, ~ti->ltid_bit);
507
0
}
Unexecuted instantiation: haproxy.c:fd_clr_running
Unexecuted instantiation: listener.c:fd_clr_running
Unexecuted instantiation: log.c:fd_clr_running
Unexecuted instantiation: mworker.c:fd_clr_running
Unexecuted instantiation: peers.c:fd_clr_running
Unexecuted instantiation: pool.c:fd_clr_running
Unexecuted instantiation: proto_sockpair.c:fd_clr_running
Unexecuted instantiation: protocol.c:fd_clr_running
Unexecuted instantiation: proxy.c:fd_clr_running
Unexecuted instantiation: resolvers.c:fd_clr_running
Unexecuted instantiation: ring.c:fd_clr_running
Unexecuted instantiation: sample.c:fd_clr_running
Unexecuted instantiation: server.c:fd_clr_running
Unexecuted instantiation: session.c:fd_clr_running
Unexecuted instantiation: signal.c:fd_clr_running
Unexecuted instantiation: sink.c:fd_clr_running
Unexecuted instantiation: sock.c:fd_clr_running
Unexecuted instantiation: sock_inet.c:fd_clr_running
Unexecuted instantiation: stats-proxy.c:fd_clr_running
Unexecuted instantiation: stats.c:fd_clr_running
Unexecuted instantiation: stick_table.c:fd_clr_running
Unexecuted instantiation: stream.c:fd_clr_running
Unexecuted instantiation: task.c:fd_clr_running
Unexecuted instantiation: tcp_rules.c:fd_clr_running
Unexecuted instantiation: tcpcheck.c:fd_clr_running
Unexecuted instantiation: thread.c:fd_clr_running
Unexecuted instantiation: tools.c:fd_clr_running
Unexecuted instantiation: trace.c:fd_clr_running
Unexecuted instantiation: vars.c:fd_clr_running
Unexecuted instantiation: action.c:fd_clr_running
Unexecuted instantiation: activity.c:fd_clr_running
Unexecuted instantiation: applet.c:fd_clr_running
Unexecuted instantiation: backend.c:fd_clr_running
Unexecuted instantiation: cfgparse-listen.c:fd_clr_running
Unexecuted instantiation: cfgparse.c:fd_clr_running
Unexecuted instantiation: channel.c:fd_clr_running
Unexecuted instantiation: check.c:fd_clr_running
Unexecuted instantiation: cli.c:fd_clr_running
Unexecuted instantiation: connection.c:fd_clr_running
Unexecuted instantiation: debug.c:fd_clr_running
Unexecuted instantiation: dgram.c:fd_clr_running
Unexecuted instantiation: dns.c:fd_clr_running
Unexecuted instantiation: dns_ring.c:fd_clr_running
Unexecuted instantiation: errors.c:fd_clr_running
Unexecuted instantiation: event_hdl.c:fd_clr_running
Unexecuted instantiation: extcheck.c:fd_clr_running
Unexecuted instantiation: fd.c:fd_clr_running
Unexecuted instantiation: filters.c:fd_clr_running
Unexecuted instantiation: flt_decomp.c:fd_clr_running
Unexecuted instantiation: flt_http_comp.c:fd_clr_running
Unexecuted instantiation: frontend.c:fd_clr_running
Unexecuted instantiation: haterm.c:fd_clr_running
Unexecuted instantiation: http_ana.c:fd_clr_running
Unexecuted instantiation: http_ext.c:fd_clr_running
Unexecuted instantiation: http_htx.c:fd_clr_running
Unexecuted instantiation: http_rules.c:fd_clr_running
Unexecuted instantiation: lb_chash.c:fd_clr_running
Unexecuted instantiation: lb_fwlc.c:fd_clr_running
Unexecuted instantiation: limits.c:fd_clr_running
Unexecuted instantiation: mailers.c:fd_clr_running
Unexecuted instantiation: mux_spop.c:fd_clr_running
Unexecuted instantiation: pattern.c:fd_clr_running
Unexecuted instantiation: payload.c:fd_clr_running
Unexecuted instantiation: proto_rhttp.c:fd_clr_running
Unexecuted instantiation: queue.c:fd_clr_running
Unexecuted instantiation: stats-file.c:fd_clr_running
Unexecuted instantiation: stats-html.c:fd_clr_running
Unexecuted instantiation: stats-json.c:fd_clr_running
Unexecuted instantiation: stconn.c:fd_clr_running
Unexecuted instantiation: cache.c:fd_clr_running
Unexecuted instantiation: cfgparse-global.c:fd_clr_running
Unexecuted instantiation: compression.c:fd_clr_running
Unexecuted instantiation: fcgi-app.c:fd_clr_running
Unexecuted instantiation: flt_spoe.c:fd_clr_running
Unexecuted instantiation: http_fetch.c:fd_clr_running
Unexecuted instantiation: proto_tcp.c:fd_clr_running
508
509
/* Prepares <fd> for being polled on all permitted threads of this group ID
510
 * (these will then be refined to only cover running ones).
511
*/
512
static inline void fd_insert(int fd, void *owner, void (*iocb)(int fd), int tgid, unsigned long thread_mask)
513
0
{
514
0
  extern void sock_conn_iocb(int);
515
0
  struct tgroup_info *tginfo = &ha_tgroup_info[tgid - 1];
516
0
  int newstate;
517
518
  /* conn_fd_handler should support edge-triggered FDs */
519
0
  newstate = 0;
520
0
  if ((global.tune.options & GTUNE_FD_ET) && iocb == sock_conn_iocb)
521
0
    newstate |= FD_ET_POSSIBLE;
522
523
  /* We must update fd_highest to reflect the highest known FD for this
524
   * thread. It's important to note that it's not necessarily the highest
525
   * FD the thread will see, it's the highest FD that was inserted by
526
   * this thread or by the main thread. The purpose is essentially to
527
   * let all threads know the highest known FD at boot, that will be
528
   * cloned into each thread, in order to limit the work range for init
529
   * functions such as fork_poller() and fd_reregister_all(). Keeping the
530
   * value thread-local substantially limits the cost, since after a few
531
   * thousand calls the value will just stop changing.
532
   */
533
0
  if (unlikely(fd > fd_highest))
534
0
    fd_highest = fd;
535
536
  /* This must never happen and would definitely indicate a bug, in
537
   * addition to overwriting some unexpected memory areas.
538
   */
539
0
  BUG_ON(fd < 0);
540
0
  BUG_ON(fd >= global.maxsock);
541
0
  BUG_ON(fdtab[fd].owner != NULL);
542
0
  BUG_ON(fdtab[fd].state != 0);
543
0
  BUG_ON(tgid < 1 || tgid > MAX_TGROUPS);
544
545
0
  thread_mask &= tginfo->threads_enabled;
546
0
  BUG_ON(thread_mask == 0);
547
548
0
  fd_claim_tgid(fd, tgid);
549
550
0
  BUG_ON(fdtab[fd].running_mask);
551
552
0
  fdtab[fd].owner = owner;
553
0
  fdtab[fd].iocb = iocb;
554
0
  fdtab[fd].state = newstate;
555
0
  fdtab[fd].thread_mask = thread_mask;
556
557
  /* just for debugging: how many times taken over since last fd_insert() */
558
0
  fdtab[fd].nb_takeover = 0;
559
560
0
  fd_drop_tgid(fd);
561
562
#ifdef DEBUG_FD
563
  fdtab[fd].event_count = 0;
564
#endif
565
566
  /* note: do not reset polled_mask here as it indicates which poller
567
   * still knows this FD from a possible previous round.
568
   */
569
570
  /* the two directions are ready until proven otherwise */
571
0
  fd_may_both(fd);
572
0
  _HA_ATOMIC_INC(&ha_used_fds);
573
0
}
Unexecuted instantiation: haproxy.c:fd_insert
Unexecuted instantiation: listener.c:fd_insert
Unexecuted instantiation: log.c:fd_insert
Unexecuted instantiation: mworker.c:fd_insert
Unexecuted instantiation: peers.c:fd_insert
Unexecuted instantiation: pool.c:fd_insert
Unexecuted instantiation: proto_sockpair.c:fd_insert
Unexecuted instantiation: protocol.c:fd_insert
Unexecuted instantiation: proxy.c:fd_insert
Unexecuted instantiation: resolvers.c:fd_insert
Unexecuted instantiation: ring.c:fd_insert
Unexecuted instantiation: sample.c:fd_insert
Unexecuted instantiation: server.c:fd_insert
Unexecuted instantiation: session.c:fd_insert
Unexecuted instantiation: signal.c:fd_insert
Unexecuted instantiation: sink.c:fd_insert
Unexecuted instantiation: sock.c:fd_insert
Unexecuted instantiation: sock_inet.c:fd_insert
Unexecuted instantiation: stats-proxy.c:fd_insert
Unexecuted instantiation: stats.c:fd_insert
Unexecuted instantiation: stick_table.c:fd_insert
Unexecuted instantiation: stream.c:fd_insert
Unexecuted instantiation: task.c:fd_insert
Unexecuted instantiation: tcp_rules.c:fd_insert
Unexecuted instantiation: tcpcheck.c:fd_insert
Unexecuted instantiation: thread.c:fd_insert
Unexecuted instantiation: tools.c:fd_insert
Unexecuted instantiation: trace.c:fd_insert
Unexecuted instantiation: vars.c:fd_insert
Unexecuted instantiation: action.c:fd_insert
Unexecuted instantiation: activity.c:fd_insert
Unexecuted instantiation: applet.c:fd_insert
Unexecuted instantiation: backend.c:fd_insert
Unexecuted instantiation: cfgparse-listen.c:fd_insert
Unexecuted instantiation: cfgparse.c:fd_insert
Unexecuted instantiation: channel.c:fd_insert
Unexecuted instantiation: check.c:fd_insert
Unexecuted instantiation: cli.c:fd_insert
Unexecuted instantiation: connection.c:fd_insert
Unexecuted instantiation: debug.c:fd_insert
Unexecuted instantiation: dgram.c:fd_insert
Unexecuted instantiation: dns.c:fd_insert
Unexecuted instantiation: dns_ring.c:fd_insert
Unexecuted instantiation: errors.c:fd_insert
Unexecuted instantiation: event_hdl.c:fd_insert
Unexecuted instantiation: extcheck.c:fd_insert
Unexecuted instantiation: fd.c:fd_insert
Unexecuted instantiation: filters.c:fd_insert
Unexecuted instantiation: flt_decomp.c:fd_insert
Unexecuted instantiation: flt_http_comp.c:fd_insert
Unexecuted instantiation: frontend.c:fd_insert
Unexecuted instantiation: haterm.c:fd_insert
Unexecuted instantiation: http_ana.c:fd_insert
Unexecuted instantiation: http_ext.c:fd_insert
Unexecuted instantiation: http_htx.c:fd_insert
Unexecuted instantiation: http_rules.c:fd_insert
Unexecuted instantiation: lb_chash.c:fd_insert
Unexecuted instantiation: lb_fwlc.c:fd_insert
Unexecuted instantiation: limits.c:fd_insert
Unexecuted instantiation: mailers.c:fd_insert
Unexecuted instantiation: mux_spop.c:fd_insert
Unexecuted instantiation: pattern.c:fd_insert
Unexecuted instantiation: payload.c:fd_insert
Unexecuted instantiation: proto_rhttp.c:fd_insert
Unexecuted instantiation: queue.c:fd_insert
Unexecuted instantiation: stats-file.c:fd_insert
Unexecuted instantiation: stats-html.c:fd_insert
Unexecuted instantiation: stats-json.c:fd_insert
Unexecuted instantiation: stconn.c:fd_insert
Unexecuted instantiation: cache.c:fd_insert
Unexecuted instantiation: cfgparse-global.c:fd_insert
Unexecuted instantiation: compression.c:fd_insert
Unexecuted instantiation: fcgi-app.c:fd_insert
Unexecuted instantiation: flt_spoe.c:fd_insert
Unexecuted instantiation: http_fetch.c:fd_insert
Unexecuted instantiation: proto_tcp.c:fd_insert
574
575
/* These are replacements for FD_SET, FD_CLR, FD_ISSET, working on uints */
576
static inline void hap_fd_set(int fd, unsigned int *evts)
577
0
{
578
0
  _HA_ATOMIC_OR(&evts[fd / (8*sizeof(*evts))], 1U << (fd & (8*sizeof(*evts) - 1)));
579
0
}
Unexecuted instantiation: haproxy.c:hap_fd_set
Unexecuted instantiation: listener.c:hap_fd_set
Unexecuted instantiation: log.c:hap_fd_set
Unexecuted instantiation: mworker.c:hap_fd_set
Unexecuted instantiation: peers.c:hap_fd_set
Unexecuted instantiation: pool.c:hap_fd_set
Unexecuted instantiation: proto_sockpair.c:hap_fd_set
Unexecuted instantiation: protocol.c:hap_fd_set
Unexecuted instantiation: proxy.c:hap_fd_set
Unexecuted instantiation: resolvers.c:hap_fd_set
Unexecuted instantiation: ring.c:hap_fd_set
Unexecuted instantiation: sample.c:hap_fd_set
Unexecuted instantiation: server.c:hap_fd_set
Unexecuted instantiation: session.c:hap_fd_set
Unexecuted instantiation: signal.c:hap_fd_set
Unexecuted instantiation: sink.c:hap_fd_set
Unexecuted instantiation: sock.c:hap_fd_set
Unexecuted instantiation: sock_inet.c:hap_fd_set
Unexecuted instantiation: stats-proxy.c:hap_fd_set
Unexecuted instantiation: stats.c:hap_fd_set
Unexecuted instantiation: stick_table.c:hap_fd_set
Unexecuted instantiation: stream.c:hap_fd_set
Unexecuted instantiation: task.c:hap_fd_set
Unexecuted instantiation: tcp_rules.c:hap_fd_set
Unexecuted instantiation: tcpcheck.c:hap_fd_set
Unexecuted instantiation: thread.c:hap_fd_set
Unexecuted instantiation: tools.c:hap_fd_set
Unexecuted instantiation: trace.c:hap_fd_set
Unexecuted instantiation: vars.c:hap_fd_set
Unexecuted instantiation: action.c:hap_fd_set
Unexecuted instantiation: activity.c:hap_fd_set
Unexecuted instantiation: applet.c:hap_fd_set
Unexecuted instantiation: backend.c:hap_fd_set
Unexecuted instantiation: cfgparse-listen.c:hap_fd_set
Unexecuted instantiation: cfgparse.c:hap_fd_set
Unexecuted instantiation: channel.c:hap_fd_set
Unexecuted instantiation: check.c:hap_fd_set
Unexecuted instantiation: cli.c:hap_fd_set
Unexecuted instantiation: connection.c:hap_fd_set
Unexecuted instantiation: debug.c:hap_fd_set
Unexecuted instantiation: dgram.c:hap_fd_set
Unexecuted instantiation: dns.c:hap_fd_set
Unexecuted instantiation: dns_ring.c:hap_fd_set
Unexecuted instantiation: errors.c:hap_fd_set
Unexecuted instantiation: event_hdl.c:hap_fd_set
Unexecuted instantiation: extcheck.c:hap_fd_set
Unexecuted instantiation: fd.c:hap_fd_set
Unexecuted instantiation: filters.c:hap_fd_set
Unexecuted instantiation: flt_decomp.c:hap_fd_set
Unexecuted instantiation: flt_http_comp.c:hap_fd_set
Unexecuted instantiation: frontend.c:hap_fd_set
Unexecuted instantiation: haterm.c:hap_fd_set
Unexecuted instantiation: http_ana.c:hap_fd_set
Unexecuted instantiation: http_ext.c:hap_fd_set
Unexecuted instantiation: http_htx.c:hap_fd_set
Unexecuted instantiation: http_rules.c:hap_fd_set
Unexecuted instantiation: lb_chash.c:hap_fd_set
Unexecuted instantiation: lb_fwlc.c:hap_fd_set
Unexecuted instantiation: limits.c:hap_fd_set
Unexecuted instantiation: mailers.c:hap_fd_set
Unexecuted instantiation: mux_spop.c:hap_fd_set
Unexecuted instantiation: pattern.c:hap_fd_set
Unexecuted instantiation: payload.c:hap_fd_set
Unexecuted instantiation: proto_rhttp.c:hap_fd_set
Unexecuted instantiation: queue.c:hap_fd_set
Unexecuted instantiation: stats-file.c:hap_fd_set
Unexecuted instantiation: stats-html.c:hap_fd_set
Unexecuted instantiation: stats-json.c:hap_fd_set
Unexecuted instantiation: stconn.c:hap_fd_set
Unexecuted instantiation: cache.c:hap_fd_set
Unexecuted instantiation: cfgparse-global.c:hap_fd_set
Unexecuted instantiation: compression.c:hap_fd_set
Unexecuted instantiation: fcgi-app.c:hap_fd_set
Unexecuted instantiation: flt_spoe.c:hap_fd_set
Unexecuted instantiation: http_fetch.c:hap_fd_set
Unexecuted instantiation: proto_tcp.c:hap_fd_set
580
581
static inline void hap_fd_clr(int fd, unsigned int *evts)
582
0
{
583
0
  _HA_ATOMIC_AND(&evts[fd / (8*sizeof(*evts))], ~(1U << (fd & (8*sizeof(*evts) - 1))));
584
0
}
Unexecuted instantiation: haproxy.c:hap_fd_clr
Unexecuted instantiation: listener.c:hap_fd_clr
Unexecuted instantiation: log.c:hap_fd_clr
Unexecuted instantiation: mworker.c:hap_fd_clr
Unexecuted instantiation: peers.c:hap_fd_clr
Unexecuted instantiation: pool.c:hap_fd_clr
Unexecuted instantiation: proto_sockpair.c:hap_fd_clr
Unexecuted instantiation: protocol.c:hap_fd_clr
Unexecuted instantiation: proxy.c:hap_fd_clr
Unexecuted instantiation: resolvers.c:hap_fd_clr
Unexecuted instantiation: ring.c:hap_fd_clr
Unexecuted instantiation: sample.c:hap_fd_clr
Unexecuted instantiation: server.c:hap_fd_clr
Unexecuted instantiation: session.c:hap_fd_clr
Unexecuted instantiation: signal.c:hap_fd_clr
Unexecuted instantiation: sink.c:hap_fd_clr
Unexecuted instantiation: sock.c:hap_fd_clr
Unexecuted instantiation: sock_inet.c:hap_fd_clr
Unexecuted instantiation: stats-proxy.c:hap_fd_clr
Unexecuted instantiation: stats.c:hap_fd_clr
Unexecuted instantiation: stick_table.c:hap_fd_clr
Unexecuted instantiation: stream.c:hap_fd_clr
Unexecuted instantiation: task.c:hap_fd_clr
Unexecuted instantiation: tcp_rules.c:hap_fd_clr
Unexecuted instantiation: tcpcheck.c:hap_fd_clr
Unexecuted instantiation: thread.c:hap_fd_clr
Unexecuted instantiation: tools.c:hap_fd_clr
Unexecuted instantiation: trace.c:hap_fd_clr
Unexecuted instantiation: vars.c:hap_fd_clr
Unexecuted instantiation: action.c:hap_fd_clr
Unexecuted instantiation: activity.c:hap_fd_clr
Unexecuted instantiation: applet.c:hap_fd_clr
Unexecuted instantiation: backend.c:hap_fd_clr
Unexecuted instantiation: cfgparse-listen.c:hap_fd_clr
Unexecuted instantiation: cfgparse.c:hap_fd_clr
Unexecuted instantiation: channel.c:hap_fd_clr
Unexecuted instantiation: check.c:hap_fd_clr
Unexecuted instantiation: cli.c:hap_fd_clr
Unexecuted instantiation: connection.c:hap_fd_clr
Unexecuted instantiation: debug.c:hap_fd_clr
Unexecuted instantiation: dgram.c:hap_fd_clr
Unexecuted instantiation: dns.c:hap_fd_clr
Unexecuted instantiation: dns_ring.c:hap_fd_clr
Unexecuted instantiation: errors.c:hap_fd_clr
Unexecuted instantiation: event_hdl.c:hap_fd_clr
Unexecuted instantiation: extcheck.c:hap_fd_clr
Unexecuted instantiation: fd.c:hap_fd_clr
Unexecuted instantiation: filters.c:hap_fd_clr
Unexecuted instantiation: flt_decomp.c:hap_fd_clr
Unexecuted instantiation: flt_http_comp.c:hap_fd_clr
Unexecuted instantiation: frontend.c:hap_fd_clr
Unexecuted instantiation: haterm.c:hap_fd_clr
Unexecuted instantiation: http_ana.c:hap_fd_clr
Unexecuted instantiation: http_ext.c:hap_fd_clr
Unexecuted instantiation: http_htx.c:hap_fd_clr
Unexecuted instantiation: http_rules.c:hap_fd_clr
Unexecuted instantiation: lb_chash.c:hap_fd_clr
Unexecuted instantiation: lb_fwlc.c:hap_fd_clr
Unexecuted instantiation: limits.c:hap_fd_clr
Unexecuted instantiation: mailers.c:hap_fd_clr
Unexecuted instantiation: mux_spop.c:hap_fd_clr
Unexecuted instantiation: pattern.c:hap_fd_clr
Unexecuted instantiation: payload.c:hap_fd_clr
Unexecuted instantiation: proto_rhttp.c:hap_fd_clr
Unexecuted instantiation: queue.c:hap_fd_clr
Unexecuted instantiation: stats-file.c:hap_fd_clr
Unexecuted instantiation: stats-html.c:hap_fd_clr
Unexecuted instantiation: stats-json.c:hap_fd_clr
Unexecuted instantiation: stconn.c:hap_fd_clr
Unexecuted instantiation: cache.c:hap_fd_clr
Unexecuted instantiation: cfgparse-global.c:hap_fd_clr
Unexecuted instantiation: compression.c:hap_fd_clr
Unexecuted instantiation: fcgi-app.c:hap_fd_clr
Unexecuted instantiation: flt_spoe.c:hap_fd_clr
Unexecuted instantiation: http_fetch.c:hap_fd_clr
Unexecuted instantiation: proto_tcp.c:hap_fd_clr
585
586
static inline unsigned int hap_fd_isset(int fd, unsigned int *evts)
587
0
{
588
0
  return evts[fd / (8*sizeof(*evts))] & (1U << (fd & (8*sizeof(*evts) - 1)));
589
0
}
Unexecuted instantiation: haproxy.c:hap_fd_isset
Unexecuted instantiation: listener.c:hap_fd_isset
Unexecuted instantiation: log.c:hap_fd_isset
Unexecuted instantiation: mworker.c:hap_fd_isset
Unexecuted instantiation: peers.c:hap_fd_isset
Unexecuted instantiation: pool.c:hap_fd_isset
Unexecuted instantiation: proto_sockpair.c:hap_fd_isset
Unexecuted instantiation: protocol.c:hap_fd_isset
Unexecuted instantiation: proxy.c:hap_fd_isset
Unexecuted instantiation: resolvers.c:hap_fd_isset
Unexecuted instantiation: ring.c:hap_fd_isset
Unexecuted instantiation: sample.c:hap_fd_isset
Unexecuted instantiation: server.c:hap_fd_isset
Unexecuted instantiation: session.c:hap_fd_isset
Unexecuted instantiation: signal.c:hap_fd_isset
Unexecuted instantiation: sink.c:hap_fd_isset
Unexecuted instantiation: sock.c:hap_fd_isset
Unexecuted instantiation: sock_inet.c:hap_fd_isset
Unexecuted instantiation: stats-proxy.c:hap_fd_isset
Unexecuted instantiation: stats.c:hap_fd_isset
Unexecuted instantiation: stick_table.c:hap_fd_isset
Unexecuted instantiation: stream.c:hap_fd_isset
Unexecuted instantiation: task.c:hap_fd_isset
Unexecuted instantiation: tcp_rules.c:hap_fd_isset
Unexecuted instantiation: tcpcheck.c:hap_fd_isset
Unexecuted instantiation: thread.c:hap_fd_isset
Unexecuted instantiation: tools.c:hap_fd_isset
Unexecuted instantiation: trace.c:hap_fd_isset
Unexecuted instantiation: vars.c:hap_fd_isset
Unexecuted instantiation: action.c:hap_fd_isset
Unexecuted instantiation: activity.c:hap_fd_isset
Unexecuted instantiation: applet.c:hap_fd_isset
Unexecuted instantiation: backend.c:hap_fd_isset
Unexecuted instantiation: cfgparse-listen.c:hap_fd_isset
Unexecuted instantiation: cfgparse.c:hap_fd_isset
Unexecuted instantiation: channel.c:hap_fd_isset
Unexecuted instantiation: check.c:hap_fd_isset
Unexecuted instantiation: cli.c:hap_fd_isset
Unexecuted instantiation: connection.c:hap_fd_isset
Unexecuted instantiation: debug.c:hap_fd_isset
Unexecuted instantiation: dgram.c:hap_fd_isset
Unexecuted instantiation: dns.c:hap_fd_isset
Unexecuted instantiation: dns_ring.c:hap_fd_isset
Unexecuted instantiation: errors.c:hap_fd_isset
Unexecuted instantiation: event_hdl.c:hap_fd_isset
Unexecuted instantiation: extcheck.c:hap_fd_isset
Unexecuted instantiation: fd.c:hap_fd_isset
Unexecuted instantiation: filters.c:hap_fd_isset
Unexecuted instantiation: flt_decomp.c:hap_fd_isset
Unexecuted instantiation: flt_http_comp.c:hap_fd_isset
Unexecuted instantiation: frontend.c:hap_fd_isset
Unexecuted instantiation: haterm.c:hap_fd_isset
Unexecuted instantiation: http_ana.c:hap_fd_isset
Unexecuted instantiation: http_ext.c:hap_fd_isset
Unexecuted instantiation: http_htx.c:hap_fd_isset
Unexecuted instantiation: http_rules.c:hap_fd_isset
Unexecuted instantiation: lb_chash.c:hap_fd_isset
Unexecuted instantiation: lb_fwlc.c:hap_fd_isset
Unexecuted instantiation: limits.c:hap_fd_isset
Unexecuted instantiation: mailers.c:hap_fd_isset
Unexecuted instantiation: mux_spop.c:hap_fd_isset
Unexecuted instantiation: pattern.c:hap_fd_isset
Unexecuted instantiation: payload.c:hap_fd_isset
Unexecuted instantiation: proto_rhttp.c:hap_fd_isset
Unexecuted instantiation: queue.c:hap_fd_isset
Unexecuted instantiation: stats-file.c:hap_fd_isset
Unexecuted instantiation: stats-html.c:hap_fd_isset
Unexecuted instantiation: stats-json.c:hap_fd_isset
Unexecuted instantiation: stconn.c:hap_fd_isset
Unexecuted instantiation: cache.c:hap_fd_isset
Unexecuted instantiation: cfgparse-global.c:hap_fd_isset
Unexecuted instantiation: compression.c:hap_fd_isset
Unexecuted instantiation: fcgi-app.c:hap_fd_isset
Unexecuted instantiation: flt_spoe.c:hap_fd_isset
Unexecuted instantiation: http_fetch.c:hap_fd_isset
Unexecuted instantiation: proto_tcp.c:hap_fd_isset
590
591
/* send a wake-up event to this thread, only if it's asleep and not notified yet */
592
static inline void wake_thread(int thr)
593
0
{
594
0
  struct thread_ctx *ctx = &ha_thread_ctx[thr];
595
596
0
  if ((_HA_ATOMIC_FETCH_OR(&ctx->flags, TH_FL_NOTIFIED) & (TH_FL_SLEEPING|TH_FL_NOTIFIED)) == TH_FL_SLEEPING) {
597
0
    char c = 'c';
598
0
    DISGUISE(write(poller_wr_pipe[thr], &c, 1));
599
0
  }
600
0
}
Unexecuted instantiation: haproxy.c:wake_thread
Unexecuted instantiation: listener.c:wake_thread
Unexecuted instantiation: log.c:wake_thread
Unexecuted instantiation: mworker.c:wake_thread
Unexecuted instantiation: peers.c:wake_thread
Unexecuted instantiation: pool.c:wake_thread
Unexecuted instantiation: proto_sockpair.c:wake_thread
Unexecuted instantiation: protocol.c:wake_thread
Unexecuted instantiation: proxy.c:wake_thread
Unexecuted instantiation: resolvers.c:wake_thread
Unexecuted instantiation: ring.c:wake_thread
Unexecuted instantiation: sample.c:wake_thread
Unexecuted instantiation: server.c:wake_thread
Unexecuted instantiation: session.c:wake_thread
Unexecuted instantiation: signal.c:wake_thread
Unexecuted instantiation: sink.c:wake_thread
Unexecuted instantiation: sock.c:wake_thread
Unexecuted instantiation: sock_inet.c:wake_thread
Unexecuted instantiation: stats-proxy.c:wake_thread
Unexecuted instantiation: stats.c:wake_thread
Unexecuted instantiation: stick_table.c:wake_thread
Unexecuted instantiation: stream.c:wake_thread
Unexecuted instantiation: task.c:wake_thread
Unexecuted instantiation: tcp_rules.c:wake_thread
Unexecuted instantiation: tcpcheck.c:wake_thread
Unexecuted instantiation: thread.c:wake_thread
Unexecuted instantiation: tools.c:wake_thread
Unexecuted instantiation: trace.c:wake_thread
Unexecuted instantiation: vars.c:wake_thread
Unexecuted instantiation: action.c:wake_thread
Unexecuted instantiation: activity.c:wake_thread
Unexecuted instantiation: applet.c:wake_thread
Unexecuted instantiation: backend.c:wake_thread
Unexecuted instantiation: cfgparse-listen.c:wake_thread
Unexecuted instantiation: cfgparse.c:wake_thread
Unexecuted instantiation: channel.c:wake_thread
Unexecuted instantiation: check.c:wake_thread
Unexecuted instantiation: cli.c:wake_thread
Unexecuted instantiation: connection.c:wake_thread
Unexecuted instantiation: debug.c:wake_thread
Unexecuted instantiation: dgram.c:wake_thread
Unexecuted instantiation: dns.c:wake_thread
Unexecuted instantiation: dns_ring.c:wake_thread
Unexecuted instantiation: errors.c:wake_thread
Unexecuted instantiation: event_hdl.c:wake_thread
Unexecuted instantiation: extcheck.c:wake_thread
Unexecuted instantiation: fd.c:wake_thread
Unexecuted instantiation: filters.c:wake_thread
Unexecuted instantiation: flt_decomp.c:wake_thread
Unexecuted instantiation: flt_http_comp.c:wake_thread
Unexecuted instantiation: frontend.c:wake_thread
Unexecuted instantiation: haterm.c:wake_thread
Unexecuted instantiation: http_ana.c:wake_thread
Unexecuted instantiation: http_ext.c:wake_thread
Unexecuted instantiation: http_htx.c:wake_thread
Unexecuted instantiation: http_rules.c:wake_thread
Unexecuted instantiation: lb_chash.c:wake_thread
Unexecuted instantiation: lb_fwlc.c:wake_thread
Unexecuted instantiation: limits.c:wake_thread
Unexecuted instantiation: mailers.c:wake_thread
Unexecuted instantiation: mux_spop.c:wake_thread
Unexecuted instantiation: pattern.c:wake_thread
Unexecuted instantiation: payload.c:wake_thread
Unexecuted instantiation: proto_rhttp.c:wake_thread
Unexecuted instantiation: queue.c:wake_thread
Unexecuted instantiation: stats-file.c:wake_thread
Unexecuted instantiation: stats-html.c:wake_thread
Unexecuted instantiation: stats-json.c:wake_thread
Unexecuted instantiation: stconn.c:wake_thread
Unexecuted instantiation: cache.c:wake_thread
Unexecuted instantiation: cfgparse-global.c:wake_thread
Unexecuted instantiation: compression.c:wake_thread
Unexecuted instantiation: fcgi-app.c:wake_thread
Unexecuted instantiation: flt_spoe.c:wake_thread
Unexecuted instantiation: http_fetch.c:wake_thread
Unexecuted instantiation: proto_tcp.c:wake_thread
601
602
603
#endif /* _HAPROXY_FD_H */
604
605
/*
606
 * Local variables:
607
 *  c-indent-level: 8
608
 *  c-basic-offset: 8
609
 * End:
610
 */