Coverage Report

Created: 2025-08-28 06:20

/src/h2o/include/h2o/socket/evloop.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2014 DeNA Co., Ltd.
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a copy
5
 * of this software and associated documentation files (the "Software"), to
6
 * deal in the Software without restriction, including without limitation the
7
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
 * sell copies of the Software, and to permit persons to whom the Software is
9
 * furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice shall be included in
12
 * all copies or substantial portions of the Software.
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
 * IN THE SOFTWARE.
21
 */
22
#ifndef h2o__evloop_h
23
#define h2o__evloop_h
24
25
#include "h2o/linklist.h"
26
#include "h2o/timerwheel.h"
27
28
147k
#define H2O_SOCKET_FLAG_IS_DISPOSED 0x1
29
156k
#define H2O_SOCKET_FLAG_IS_READ_READY 0x2
30
130k
#define H2O_SOCKET_FLAG_IS_WRITE_NOTIFY 0x4
31
103k
#define H2O_SOCKET_FLAG_IS_POLLED_FOR_READ 0x8
32
47.9k
#define H2O_SOCKET_FLAG_IS_POLLED_FOR_WRITE 0x10
33
38.5k
#define H2O_SOCKET_FLAG_DONT_READ 0x20
34
40.3k
#define H2O_SOCKET_FLAG_IS_CONNECTING 0x40
35
89.3k
#define H2O_SOCKET_FLAG_IS_ACCEPTED_CONNECTION 0x80
36
10.8k
#define H2O_SOCKET_FLAG_IS_CONNECTING_CONNECTED 0x100
37
/**
38
 * Determines if the socket has been registered to epoll. Must be preserved when setting H2O_SOCKET_FLAG_IS_DISPOSED, as this flag
39
 * is used for skipping unnecessary invocations of `epoll_ctl` or for determining the `op` being specified.
40
 */
41
88.4k
#define H2O_SOCKET_FLAG__EPOLL_IS_REGISTERED 0x1000
42
43
typedef struct st_h2o_evloop_t {
44
    struct st_h2o_evloop_socket_t *_pending_as_client;
45
    struct st_h2o_evloop_socket_t *_pending_as_server;
46
    struct {
47
        struct st_h2o_evloop_socket_t *head;
48
        struct st_h2o_evloop_socket_t **tail_ref;
49
    } _statechanged;
50
    uint64_t _now_millisec;
51
    uint64_t _now_nanosec;
52
    struct timeval _tv_at;
53
    h2o_timerwheel_t *_timeouts;
54
    h2o_sliding_counter_t exec_time_nanosec_counter;
55
    uint64_t run_count;
56
} h2o_evloop_t;
57
58
typedef h2o_evloop_t h2o_loop_t;
59
60
typedef h2o_timerwheel_entry_t h2o_timer_t;
61
typedef h2o_timerwheel_cb h2o_timer_cb;
62
63
extern size_t h2o_evloop_socket_max_read_size;
64
extern size_t h2o_evloop_socket_max_write_size;
65
66
h2o_socket_t *h2o_evloop_socket_create(h2o_evloop_t *loop, int fd, int flags);
67
h2o_socket_t *h2o_evloop_socket_accept(h2o_socket_t *listener);
68
/**
69
 * Sets number of bytes that can be read at once (default: 1MB).
70
 */
71
void h2o_evloop_socket_set_max_read_size(h2o_socket_t *sock, size_t max_size);
72
73
h2o_evloop_t *h2o_evloop_create(void);
74
void h2o_evloop_destroy(h2o_evloop_t *loop);
75
/**
76
 * runs a event loop once. The function returns 0 if successful, or -1 if it aborts the operation due to a system call returning an
77
 * error (typcially due to an interrupt setting errno to EINTR). When an error is returned, the application can consult errno and
78
 * rerun the event loop.
79
 */
80
int h2o_evloop_run(h2o_evloop_t *loop, int32_t max_wait);
81
82
17.1k
#define h2o_timer_init h2o_timerwheel_init_entry
83
348k
#define h2o_timer_is_linked h2o_timerwheel_is_linked
84
static void h2o_timer_link(h2o_evloop_t *loop, uint64_t delay_ticks, h2o_timer_t *timer);
85
280k
#define h2o_timer_unlink h2o_timerwheel_unlink
86
87
#if H2O_USE_IO_URING
88
struct st_h2o_io_uring_t;
89
struct st_h2o_io_uring_t *h2o_evloop__io_uring(h2o_evloop_t *loop);
90
#endif
91
92
/* inline definitions */
93
94
static inline struct timeval h2o_gettimeofday(h2o_evloop_t *loop)
95
204k
{
96
204k
    return loop->_tv_at;
97
204k
}
driver.cc:h2o_gettimeofday(st_h2o_evloop_t*)
Line
Count
Source
95
17.7k
{
96
17.7k
    return loop->_tv_at;
97
17.7k
}
Unexecuted instantiation: driver_common.cc:h2o_gettimeofday(st_h2o_evloop_t*)
Unexecuted instantiation: multithread.c:h2o_gettimeofday
Unexecuted instantiation: socket.c:h2o_gettimeofday
Unexecuted instantiation: socketpool.c:h2o_gettimeofday
Unexecuted instantiation: roundrobin.c:h2o_gettimeofday
Unexecuted instantiation: config.c:h2o_gettimeofday
Unexecuted instantiation: configurator.c:h2o_gettimeofday
Unexecuted instantiation: context.c:h2o_gettimeofday
Unexecuted instantiation: headers.c:h2o_gettimeofday
request.c:h2o_gettimeofday
Line
Count
Source
95
33.8k
{
96
33.8k
    return loop->_tv_at;
97
33.8k
}
Unexecuted instantiation: util.c:h2o_gettimeofday
Unexecuted instantiation: access_log.c:h2o_gettimeofday
Unexecuted instantiation: file.c:h2o_gettimeofday
Unexecuted instantiation: mimemap.c:h2o_gettimeofday
Unexecuted instantiation: proxy.c:h2o_gettimeofday
http1.c:h2o_gettimeofday
Line
Count
Source
95
35.6k
{
96
35.6k
    return loop->_tv_at;
97
35.6k
}
connection.c:h2o_gettimeofday
Line
Count
Source
95
70.9k
{
96
70.9k
    return loop->_tv_at;
97
70.9k
}
Unexecuted instantiation: scheduler.c:h2o_gettimeofday
stream.c:h2o_gettimeofday
Line
Count
Source
95
13.3k
{
96
13.3k
    return loop->_tv_at;
97
13.3k
}
Unexecuted instantiation: http2_debug_state.c:h2o_gettimeofday
Unexecuted instantiation: common.c:h2o_gettimeofday
server.c:h2o_gettimeofday
Line
Count
Source
95
16.4k
{
96
16.4k
    return loop->_tv_at;
97
16.4k
}
Unexecuted instantiation: hostinfo.c:h2o_gettimeofday
Unexecuted instantiation: http3client.c:h2o_gettimeofday
httpclient.c:h2o_gettimeofday
Line
Count
Source
95
3.66k
{
96
3.66k
    return loop->_tv_at;
97
3.66k
}
Unexecuted instantiation: memcached.c:h2o_gettimeofday
Unexecuted instantiation: redis.c:h2o_gettimeofday
Unexecuted instantiation: serverutil.c:h2o_gettimeofday
Unexecuted instantiation: absprio.c:h2o_gettimeofday
Unexecuted instantiation: logconf.c:h2o_gettimeofday
Unexecuted instantiation: compress.c:h2o_gettimeofday
Unexecuted instantiation: gzip.c:h2o_gettimeofday
Unexecuted instantiation: headers_util.c:h2o_gettimeofday
Unexecuted instantiation: frame.c:h2o_gettimeofday
Unexecuted instantiation: qpack.c:h2o_gettimeofday
http1client.c:h2o_gettimeofday
Line
Count
Source
95
12.7k
{
96
12.7k
    return loop->_tv_at;
97
12.7k
}
Unexecuted instantiation: http2client.c:h2o_gettimeofday
Unexecuted instantiation: driver_url.cc:h2o_gettimeofday(st_h2o_evloop_t*)
Unexecuted instantiation: driver_h3.cc:h2o_gettimeofday(st_h2o_evloop_t*)
Unexecuted instantiation: least_conn.c:h2o_gettimeofday
Unexecuted instantiation: errordoc.c:h2o_gettimeofday
Unexecuted instantiation: expires.c:h2o_gettimeofday
Unexecuted instantiation: fastcgi.c:h2o_gettimeofday
Unexecuted instantiation: h2olog.c:h2o_gettimeofday
Unexecuted instantiation: connect.c:h2o_gettimeofday
Unexecuted instantiation: redirect.c:h2o_gettimeofday
Unexecuted instantiation: reproxy.c:h2o_gettimeofday
Unexecuted instantiation: throttle_resp.c:h2o_gettimeofday
Unexecuted instantiation: self_trace.c:h2o_gettimeofday
Unexecuted instantiation: server_timing.c:h2o_gettimeofday
Unexecuted instantiation: status.c:h2o_gettimeofday
Unexecuted instantiation: events.c:h2o_gettimeofday
Unexecuted instantiation: memory.c:h2o_gettimeofday
Unexecuted instantiation: requests.c:h2o_gettimeofday
Unexecuted instantiation: ssl.c:h2o_gettimeofday
Unexecuted instantiation: durations.c:h2o_gettimeofday
Unexecuted instantiation: brotli.c:h2o_gettimeofday
98
99
static inline uint64_t h2o_now(h2o_evloop_t *loop)
100
4.32M
{
101
4.32M
    return loop->_now_millisec;
102
4.32M
}
Unexecuted instantiation: driver.cc:h2o_now(st_h2o_evloop_t*)
Unexecuted instantiation: driver_common.cc:h2o_now(st_h2o_evloop_t*)
Unexecuted instantiation: multithread.c:h2o_now
Unexecuted instantiation: socket.c:h2o_now
socketpool.c:h2o_now
Line
Count
Source
100
3.67k
{
101
3.67k
    return loop->_now_millisec;
102
3.67k
}
Unexecuted instantiation: roundrobin.c:h2o_now
Unexecuted instantiation: config.c:h2o_now
Unexecuted instantiation: configurator.c:h2o_now
Unexecuted instantiation: context.c:h2o_now
Unexecuted instantiation: headers.c:h2o_now
Unexecuted instantiation: request.c:h2o_now
Unexecuted instantiation: util.c:h2o_now
Unexecuted instantiation: access_log.c:h2o_now
Unexecuted instantiation: file.c:h2o_now
Unexecuted instantiation: mimemap.c:h2o_now
Unexecuted instantiation: proxy.c:h2o_now
Unexecuted instantiation: http1.c:h2o_now
Unexecuted instantiation: connection.c:h2o_now
Unexecuted instantiation: scheduler.c:h2o_now
Unexecuted instantiation: stream.c:h2o_now
Unexecuted instantiation: http2_debug_state.c:h2o_now
common.c:h2o_now
Line
Count
Source
100
19.4k
{
101
19.4k
    return loop->_now_millisec;
102
19.4k
}
Unexecuted instantiation: server.c:h2o_now
Unexecuted instantiation: hostinfo.c:h2o_now
Unexecuted instantiation: http3client.c:h2o_now
Unexecuted instantiation: httpclient.c:h2o_now
Unexecuted instantiation: memcached.c:h2o_now
Unexecuted instantiation: redis.c:h2o_now
Unexecuted instantiation: serverutil.c:h2o_now
Unexecuted instantiation: absprio.c:h2o_now
Unexecuted instantiation: logconf.c:h2o_now
Unexecuted instantiation: compress.c:h2o_now
Unexecuted instantiation: gzip.c:h2o_now
Unexecuted instantiation: headers_util.c:h2o_now
Unexecuted instantiation: frame.c:h2o_now
Unexecuted instantiation: qpack.c:h2o_now
Unexecuted instantiation: http1client.c:h2o_now
Unexecuted instantiation: http2client.c:h2o_now
Unexecuted instantiation: driver_url.cc:h2o_now(st_h2o_evloop_t*)
driver_h3.cc:h2o_now(st_h2o_evloop_t*)
Line
Count
Source
100
4.29M
{
101
4.29M
    return loop->_now_millisec;
102
4.29M
}
Unexecuted instantiation: least_conn.c:h2o_now
Unexecuted instantiation: errordoc.c:h2o_now
Unexecuted instantiation: expires.c:h2o_now
Unexecuted instantiation: fastcgi.c:h2o_now
Unexecuted instantiation: h2olog.c:h2o_now
Unexecuted instantiation: connect.c:h2o_now
Unexecuted instantiation: redirect.c:h2o_now
Unexecuted instantiation: reproxy.c:h2o_now
Unexecuted instantiation: throttle_resp.c:h2o_now
Unexecuted instantiation: self_trace.c:h2o_now
Unexecuted instantiation: server_timing.c:h2o_now
Unexecuted instantiation: status.c:h2o_now
Unexecuted instantiation: events.c:h2o_now
Unexecuted instantiation: memory.c:h2o_now
Unexecuted instantiation: requests.c:h2o_now
Unexecuted instantiation: ssl.c:h2o_now
Unexecuted instantiation: durations.c:h2o_now
Unexecuted instantiation: brotli.c:h2o_now
103
104
static inline uint64_t h2o_now_nanosec(h2o_evloop_t *loop)
105
0
{
106
0
    return loop->_now_nanosec;
107
0
}
Unexecuted instantiation: driver.cc:h2o_now_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_common.cc:h2o_now_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: multithread.c:h2o_now_nanosec
Unexecuted instantiation: socket.c:h2o_now_nanosec
Unexecuted instantiation: socketpool.c:h2o_now_nanosec
Unexecuted instantiation: roundrobin.c:h2o_now_nanosec
Unexecuted instantiation: config.c:h2o_now_nanosec
Unexecuted instantiation: configurator.c:h2o_now_nanosec
Unexecuted instantiation: context.c:h2o_now_nanosec
Unexecuted instantiation: headers.c:h2o_now_nanosec
Unexecuted instantiation: request.c:h2o_now_nanosec
Unexecuted instantiation: util.c:h2o_now_nanosec
Unexecuted instantiation: access_log.c:h2o_now_nanosec
Unexecuted instantiation: file.c:h2o_now_nanosec
Unexecuted instantiation: mimemap.c:h2o_now_nanosec
Unexecuted instantiation: proxy.c:h2o_now_nanosec
Unexecuted instantiation: http1.c:h2o_now_nanosec
Unexecuted instantiation: connection.c:h2o_now_nanosec
Unexecuted instantiation: scheduler.c:h2o_now_nanosec
Unexecuted instantiation: stream.c:h2o_now_nanosec
Unexecuted instantiation: http2_debug_state.c:h2o_now_nanosec
Unexecuted instantiation: common.c:h2o_now_nanosec
Unexecuted instantiation: server.c:h2o_now_nanosec
Unexecuted instantiation: hostinfo.c:h2o_now_nanosec
Unexecuted instantiation: http3client.c:h2o_now_nanosec
Unexecuted instantiation: httpclient.c:h2o_now_nanosec
Unexecuted instantiation: memcached.c:h2o_now_nanosec
Unexecuted instantiation: redis.c:h2o_now_nanosec
Unexecuted instantiation: serverutil.c:h2o_now_nanosec
Unexecuted instantiation: absprio.c:h2o_now_nanosec
Unexecuted instantiation: logconf.c:h2o_now_nanosec
Unexecuted instantiation: compress.c:h2o_now_nanosec
Unexecuted instantiation: gzip.c:h2o_now_nanosec
Unexecuted instantiation: headers_util.c:h2o_now_nanosec
Unexecuted instantiation: frame.c:h2o_now_nanosec
Unexecuted instantiation: qpack.c:h2o_now_nanosec
Unexecuted instantiation: http1client.c:h2o_now_nanosec
Unexecuted instantiation: http2client.c:h2o_now_nanosec
Unexecuted instantiation: driver_url.cc:h2o_now_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_h3.cc:h2o_now_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: least_conn.c:h2o_now_nanosec
Unexecuted instantiation: errordoc.c:h2o_now_nanosec
Unexecuted instantiation: expires.c:h2o_now_nanosec
Unexecuted instantiation: fastcgi.c:h2o_now_nanosec
Unexecuted instantiation: h2olog.c:h2o_now_nanosec
Unexecuted instantiation: connect.c:h2o_now_nanosec
Unexecuted instantiation: redirect.c:h2o_now_nanosec
Unexecuted instantiation: reproxy.c:h2o_now_nanosec
Unexecuted instantiation: throttle_resp.c:h2o_now_nanosec
Unexecuted instantiation: self_trace.c:h2o_now_nanosec
Unexecuted instantiation: server_timing.c:h2o_now_nanosec
Unexecuted instantiation: status.c:h2o_now_nanosec
Unexecuted instantiation: events.c:h2o_now_nanosec
Unexecuted instantiation: memory.c:h2o_now_nanosec
Unexecuted instantiation: requests.c:h2o_now_nanosec
Unexecuted instantiation: ssl.c:h2o_now_nanosec
Unexecuted instantiation: durations.c:h2o_now_nanosec
Unexecuted instantiation: brotli.c:h2o_now_nanosec
108
109
static inline uint64_t h2o_evloop_get_execution_time_millisec(h2o_evloop_t *loop)
110
6.42k
{
111
6.42k
    return loop->exec_time_nanosec_counter.average / 1000000;
112
6.42k
}
Unexecuted instantiation: driver.cc:h2o_evloop_get_execution_time_millisec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_common.cc:h2o_evloop_get_execution_time_millisec(st_h2o_evloop_t*)
Unexecuted instantiation: multithread.c:h2o_evloop_get_execution_time_millisec
socket.c:h2o_evloop_get_execution_time_millisec
Line
Count
Source
110
6.42k
{
111
6.42k
    return loop->exec_time_nanosec_counter.average / 1000000;
112
6.42k
}
Unexecuted instantiation: socketpool.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: roundrobin.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: config.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: configurator.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: context.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: headers.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: request.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: util.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: access_log.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: file.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: mimemap.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: proxy.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: http1.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: connection.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: scheduler.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: stream.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: http2_debug_state.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: common.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: server.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: hostinfo.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: http3client.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: httpclient.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: memcached.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: redis.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: serverutil.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: absprio.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: logconf.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: compress.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: gzip.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: headers_util.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: frame.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: qpack.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: http1client.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: http2client.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: driver_url.cc:h2o_evloop_get_execution_time_millisec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_h3.cc:h2o_evloop_get_execution_time_millisec(st_h2o_evloop_t*)
Unexecuted instantiation: least_conn.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: errordoc.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: expires.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: fastcgi.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: h2olog.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: connect.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: redirect.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: reproxy.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: throttle_resp.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: self_trace.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: server_timing.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: status.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: events.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: memory.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: requests.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: ssl.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: durations.c:h2o_evloop_get_execution_time_millisec
Unexecuted instantiation: brotli.c:h2o_evloop_get_execution_time_millisec
113
114
static inline uint64_t h2o_evloop_get_execution_time_nanosec(h2o_evloop_t *loop)
115
0
{
116
0
    return loop->exec_time_nanosec_counter.average;
117
0
}
Unexecuted instantiation: driver.cc:h2o_evloop_get_execution_time_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_common.cc:h2o_evloop_get_execution_time_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: multithread.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: socket.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: socketpool.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: roundrobin.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: config.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: configurator.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: context.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: headers.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: request.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: util.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: access_log.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: file.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: mimemap.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: proxy.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: http1.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: connection.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: scheduler.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: stream.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: http2_debug_state.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: common.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: server.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: hostinfo.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: http3client.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: httpclient.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: memcached.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: redis.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: serverutil.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: absprio.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: logconf.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: compress.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: gzip.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: headers_util.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: frame.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: qpack.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: http1client.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: http2client.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: driver_url.cc:h2o_evloop_get_execution_time_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: driver_h3.cc:h2o_evloop_get_execution_time_nanosec(st_h2o_evloop_t*)
Unexecuted instantiation: least_conn.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: errordoc.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: expires.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: fastcgi.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: h2olog.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: connect.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: redirect.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: reproxy.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: throttle_resp.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: self_trace.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: server_timing.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: status.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: events.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: memory.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: requests.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: ssl.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: durations.c:h2o_evloop_get_execution_time_nanosec
Unexecuted instantiation: brotli.c:h2o_evloop_get_execution_time_nanosec
118
119
inline void h2o_timer_link(h2o_evloop_t *loop, uint64_t delay_ticks, h2o_timer_t *timer)
120
196k
{
121
196k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
196k
}
Unexecuted instantiation: driver.cc:h2o_timer_link(st_h2o_evloop_t*, unsigned long, st_h2o_timerwheel_entry_t*)
Unexecuted instantiation: driver_common.cc:h2o_timer_link(st_h2o_evloop_t*, unsigned long, st_h2o_timerwheel_entry_t*)
Unexecuted instantiation: multithread.c:h2o_timer_link
Unexecuted instantiation: socket.c:h2o_timer_link
socketpool.c:h2o_timer_link
Line
Count
Source
120
6
{
121
6
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
6
}
Unexecuted instantiation: roundrobin.c:h2o_timer_link
Unexecuted instantiation: config.c:h2o_timer_link
Unexecuted instantiation: configurator.c:h2o_timer_link
Unexecuted instantiation: context.c:h2o_timer_link
Unexecuted instantiation: headers.c:h2o_timer_link
Unexecuted instantiation: request.c:h2o_timer_link
Unexecuted instantiation: util.c:h2o_timer_link
Unexecuted instantiation: access_log.c:h2o_timer_link
Unexecuted instantiation: file.c:h2o_timer_link
Unexecuted instantiation: mimemap.c:h2o_timer_link
proxy.c:h2o_timer_link
Line
Count
Source
120
2.51k
{
121
2.51k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
2.51k
}
http1.c:h2o_timer_link
Line
Count
Source
120
60.1k
{
121
60.1k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
60.1k
}
connection.c:h2o_timer_link
Line
Count
Source
120
98.5k
{
121
98.5k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
98.5k
}
Unexecuted instantiation: scheduler.c:h2o_timer_link
Unexecuted instantiation: stream.c:h2o_timer_link
Unexecuted instantiation: http2_debug_state.c:h2o_timer_link
common.c:h2o_timer_link
Line
Count
Source
120
19.4k
{
121
19.4k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
19.4k
}
server.c:h2o_timer_link
Line
Count
Source
120
955
{
121
955
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
955
}
Unexecuted instantiation: hostinfo.c:h2o_timer_link
Unexecuted instantiation: http3client.c:h2o_timer_link
httpclient.c:h2o_timer_link
Line
Count
Source
120
3.66k
{
121
3.66k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
3.66k
}
Unexecuted instantiation: memcached.c:h2o_timer_link
Unexecuted instantiation: redis.c:h2o_timer_link
Unexecuted instantiation: serverutil.c:h2o_timer_link
Unexecuted instantiation: absprio.c:h2o_timer_link
Unexecuted instantiation: logconf.c:h2o_timer_link
Unexecuted instantiation: compress.c:h2o_timer_link
Unexecuted instantiation: gzip.c:h2o_timer_link
Unexecuted instantiation: headers_util.c:h2o_timer_link
Unexecuted instantiation: frame.c:h2o_timer_link
Unexecuted instantiation: qpack.c:h2o_timer_link
http1client.c:h2o_timer_link
Line
Count
Source
120
11.5k
{
121
11.5k
    h2o_timerwheel_link_abs(loop->_timeouts, timer, loop->_now_millisec + delay_ticks);
122
11.5k
}
Unexecuted instantiation: http2client.c:h2o_timer_link
Unexecuted instantiation: driver_url.cc:h2o_timer_link(st_h2o_evloop_t*, unsigned long, st_h2o_timerwheel_entry_t*)
Unexecuted instantiation: driver_h3.cc:h2o_timer_link(st_h2o_evloop_t*, unsigned long, st_h2o_timerwheel_entry_t*)
Unexecuted instantiation: least_conn.c:h2o_timer_link
Unexecuted instantiation: errordoc.c:h2o_timer_link
Unexecuted instantiation: expires.c:h2o_timer_link
Unexecuted instantiation: fastcgi.c:h2o_timer_link
Unexecuted instantiation: h2olog.c:h2o_timer_link
Unexecuted instantiation: connect.c:h2o_timer_link
Unexecuted instantiation: redirect.c:h2o_timer_link
Unexecuted instantiation: reproxy.c:h2o_timer_link
Unexecuted instantiation: throttle_resp.c:h2o_timer_link
Unexecuted instantiation: self_trace.c:h2o_timer_link
Unexecuted instantiation: server_timing.c:h2o_timer_link
Unexecuted instantiation: status.c:h2o_timer_link
Unexecuted instantiation: events.c:h2o_timer_link
Unexecuted instantiation: memory.c:h2o_timer_link
Unexecuted instantiation: requests.c:h2o_timer_link
Unexecuted instantiation: ssl.c:h2o_timer_link
Unexecuted instantiation: durations.c:h2o_timer_link
Unexecuted instantiation: brotli.c:h2o_timer_link
123
124
#endif