mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Turn on epoll changelists with libevent 2.0.9-rc and later
Libevent 2.0 has a "changelist" feature that avoids making redundant syscalls if we wind up doing a lot of event_add/event_del operations on the same fd in a row. Unfortunately, due to a weird design choice in Linux, it doesn't work right with epoll when multiple fds refer to the same socket (e.g., one is a dup() of the other). We don't dup() anything we give to Libevent, though, so it is safe for us to explicitly turn this feature on.
This commit is contained in:
parent
1d0f8fe53c
commit
dd2ae32bc1
@ -186,6 +186,12 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
|
||||
event_config_set_num_cpus_hint(cfg, torcfg->num_cpus);
|
||||
#endif
|
||||
|
||||
#if LIBEVENT_VERSION_NUMBER >= V(2,0,9)
|
||||
/* We can enable changelist support with epoll, since we don't give
|
||||
* Libevent any dup'd fds. This lets us avoid some syscalls. */
|
||||
event_config_set_flag(cfg, EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST);
|
||||
#endif
|
||||
|
||||
the_event_base = event_base_new_with_config(cfg);
|
||||
|
||||
event_config_free(cfg);
|
||||
|
Loading…
Reference in New Issue
Block a user