bind9/tests/isc
Ondřej Surý a5f13b3410 Replace the shared work pool with per-loop, per-lane worker threads
Offloaded work used two different mechanisms: a per-loop isc_helper
thread for CPU-bound crypto (DNSSEC validation, message signature
checks) and the process-global libuv thread pool for blocking I/O (zone
load and dump, inbound transfer apply). Neither could cancel a queued
task, and the two disagreed about exclusive mode — the helper paused
with its loop under isc_loopmgr_pause() but the libuv pool did not, so
blocking offloaded work kept running while a loop held the exclusive
lock.

Unify both behind isc_work: each loop gets its own worker thread per
lane — FAST for short, bounded tasks and SLOW for long, blocking ones —
fed by a private queue. Separate lanes keep a short crypto task off the
path of a multi-second zone dump once both run on per-loop workers;
every lane parks with isc_loopmgr_pause() so exclusive mode now quiesces
offloaded work too; and a still-queued task can be canceled before it
starts (isc_work_cancel). isc_helper is removed and its callers select a
lane.
2026-06-17 19:07:08 +02:00
..
testdata/file Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
ascii_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
async_test.c Change the loopmgr to be singleton 2025-07-23 22:44:16 +02:00
buffer_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
counter_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
dnsstream_utils_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
dnsstream_utils_test_data.h Add a set of unit tests for dnsbuffer_t and dnsstream_assembler_t 2022-12-20 21:24:45 +02:00
doh_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
errno_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
file_test.c Stop isc_file_safecreate from following symlinks 2026-04-29 16:56:25 +02:00
hash_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
hashmap_nodes.h Reduce the size of hashmap_nodes.h file 2024-08-15 10:05:32 +02:00
hashmap_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
heap_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
histo_test.c Support compilation with cmocka 2.0.0+ 2026-01-07 10:38:45 +01:00
hmac_test.c Separate isc_hmac between pre and post OpenSSL 3.0 2026-02-02 11:50:14 +03:00
ht_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
job_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
lex_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
loop_test.c Fix one-definition-rule violation in the loop unit test 2025-07-24 17:34:11 +02:00
md_test.c switch isc_md_type_t to a proper enum 2026-02-02 11:12:55 +03:00
mem_test.c Make isc_mem_isovermem() probabilistic 2026-05-07 13:32:15 +02:00
meson.build Add build-time check for unregistered unit test files 2026-06-09 13:22:18 +02:00
mutex_test.c ISC_RUN_TEST_IMPL should use a static declaration 2026-01-28 07:26:04 +11:00
netaddr_test.c IPv6 case to isc_netaddr_masktoprefixlen tests 2025-03-26 13:56:53 +01:00
netmgr_common.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
netmgr_common.h Refactor the network manager to be a singleton 2025-07-23 22:45:38 +02:00
parse_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
proxyheader_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
proxyheader_test_data.h Add PROXY header handling unit test suite 2023-12-06 15:15:24 +02:00
proxystream_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
proxyudp_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
quota_test.c Add support for setting thread stack size 2025-08-05 10:46:09 +02:00
radix_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
ratelimiter_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
regex_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
result_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
rwlock_test.c ISC_RUN_TEST_IMPL should use a static declaration 2026-01-28 07:26:04 +11:00
safe_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
siphash_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
sockaddr_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
spinlock_test.c ISC_RUN_TEST_IMPL should use a static declaration 2026-01-28 07:26:04 +11:00
stats_test.c Add low contention stats counter 2026-03-26 10:19:25 +01:00
stream_shutdown.c Change the loopmgr to be singleton 2025-07-23 22:44:16 +02:00
symtab_test.c Add and use global memory context called isc_g_mctx 2025-08-04 11:29:26 +02:00
tcp_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
tcpdns_test.c Refactor the network manager to be a singleton 2025-07-23 22:45:38 +02:00
time_test.c Call tzset() after setenv("TZ", ...) in unit tests 2026-05-26 15:52:59 +02:00
timer_test.c Change the loopmgr to be singleton 2025-07-23 22:44:16 +02:00
tls_test.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
tlsdns_test.c Refactor the network manager to be a singleton 2025-07-23 22:45:38 +02:00
udp_test.c Refactor the network manager to be a singleton 2025-07-23 22:45:38 +02:00
uv_wrap.h Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
work_test.c Replace the shared work pool with per-loop, per-lane worker threads 2026-06-17 19:07:08 +02:00