|
|
@ -1335,7 +1335,11 @@ static void create_everything(void) { |
|
|
} |
|
|
} |
|
|
rtpe_pollers = g_malloc(sizeof(*rtpe_pollers) * num_rtpe_pollers); |
|
|
rtpe_pollers = g_malloc(sizeof(*rtpe_pollers) * num_rtpe_pollers); |
|
|
for (unsigned int i = 0; i < num_rtpe_pollers; i++) { |
|
|
for (unsigned int i = 0; i < num_rtpe_pollers; i++) { |
|
|
rtpe_pollers[i] = rtpe_config.common.io_uring ? uring_poller_new() : poller_new(); |
|
|
|
|
|
|
|
|
rtpe_pollers[i] = |
|
|
|
|
|
#ifdef HAVE_LIBURING |
|
|
|
|
|
rtpe_config.common.io_uring ? uring_poller_new() : |
|
|
|
|
|
#endif |
|
|
|
|
|
poller_new(); |
|
|
if (!rtpe_pollers[i]) |
|
|
if (!rtpe_pollers[i]) |
|
|
die("poller creation failed"); |
|
|
die("poller creation failed"); |
|
|
} |
|
|
} |
|
|
@ -1440,6 +1444,7 @@ static void do_redis_restore(void) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef HAVE_LIBURING |
|
|
static void uring_thread_waker(struct thread_waker *wk) { |
|
|
static void uring_thread_waker(struct thread_waker *wk) { |
|
|
struct poller *p = wk->arg; |
|
|
struct poller *p = wk->arg; |
|
|
uring_poller_wake(p); |
|
|
uring_poller_wake(p); |
|
|
@ -1461,6 +1466,7 @@ static void uring_poller_loop(void *ptr) { |
|
|
thread_waker_del(&wk); |
|
|
thread_waker_del(&wk); |
|
|
uring_poller_clear(p); |
|
|
uring_poller_clear(p); |
|
|
} |
|
|
} |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char **argv) { |
|
|
int main(int argc, char **argv) { |
|
|
@ -1520,7 +1526,11 @@ int main(int argc, char **argv) { |
|
|
service_notify("READY=1\n"); |
|
|
service_notify("READY=1\n"); |
|
|
|
|
|
|
|
|
for (unsigned int idx = 0; idx < num_poller_threads; ++idx) |
|
|
for (unsigned int idx = 0; idx < num_poller_threads; ++idx) |
|
|
thread_create_detach_prio(rtpe_config.common.io_uring ? uring_poller_loop : poller_loop, |
|
|
|
|
|
|
|
|
thread_create_detach_prio( |
|
|
|
|
|
#ifdef HAVE_LIBURING |
|
|
|
|
|
rtpe_config.common.io_uring ? uring_poller_loop : |
|
|
|
|
|
#endif |
|
|
|
|
|
poller_loop, |
|
|
rtpe_pollers[idx % num_rtpe_pollers], |
|
|
rtpe_pollers[idx % num_rtpe_pollers], |
|
|
rtpe_config.scheduling, rtpe_config.priority, |
|
|
rtpe_config.scheduling, rtpe_config.priority, |
|
|
idx < rtpe_config.num_threads ? "poller" : "cpoller"); |
|
|
idx < rtpe_config.num_threads ? "poller" : "cpoller"); |
|
|
@ -1590,9 +1600,11 @@ int main(int argc, char **argv) { |
|
|
release_listeners(&rtpe_control_ng); |
|
|
release_listeners(&rtpe_control_ng); |
|
|
release_listeners(&rtpe_control_ng_tcp); |
|
|
release_listeners(&rtpe_control_ng_tcp); |
|
|
for (unsigned int idx = 0; idx < num_rtpe_pollers; ++idx) |
|
|
for (unsigned int idx = 0; idx < num_rtpe_pollers; ++idx) |
|
|
|
|
|
#ifdef HAVE_LIBURING |
|
|
if (rtpe_config.common.io_uring) |
|
|
if (rtpe_config.common.io_uring) |
|
|
uring_poller_free(&rtpe_pollers[idx]); |
|
|
uring_poller_free(&rtpe_pollers[idx]); |
|
|
else |
|
|
else |
|
|
|
|
|
#endif |
|
|
poller_free(&rtpe_pollers[idx]); |
|
|
poller_free(&rtpe_pollers[idx]); |
|
|
g_free(rtpe_pollers); |
|
|
g_free(rtpe_pollers); |
|
|
interfaces_free(); |
|
|
interfaces_free(); |
|
|
|