in photon.cpp [86:132]
int __photon_init(uint64_t event_engine, uint64_t io_engine, const PhotonOptions& options) {
if (options.use_pooled_stack_allocator) {
use_pooled_stack_allocator();
}
if (options.bypass_threadpool) {
set_bypass_threadpool(true);
}
if (vcpu_init() < 0)
return -1;
const uint64_t ALL_ENGINES =
INIT_EVENT_EPOLL | INIT_EVENT_EPOLL_NG |
INIT_EVENT_IOURING | INIT_EVENT_KQUEUE |
INIT_EVENT_SELECT | INIT_EVENT_IOCP;
if (event_engine & ALL_ENGINES) {
for (auto x : recommended_order) {
if ((x & event_engine) && init_event_engine(x, event_engine, options) == 0) {
goto next;
}
}
LOG_ERROR_RETURN(0, -1, "All master engines init failed");
}
next:
if ((INIT_EVENT_SIGNAL & event_engine) && sync_signal_init() < 0)
return -1;
#ifdef ENABLE_FSTACK_DPDK
INIT_IO(FSTACK_DPDK, fstack_dpdk);
#endif
INIT_IO(EXPORTFS, exportfs)
#ifdef ENABLE_CURL
INIT_IO(LIBCURL, libcurl)
#endif
#ifdef __linux__
INIT_IO(LIBAIO, libaio_wrapper, options.libaio_queue_depth)
INIT_IO(SOCKET_EDGE_TRIGGER, et_poller)
#endif
g_event_engine = event_engine;
g_io_engine = io_engine;
if (!reset_handle_registed) {
pthread_atfork(nullptr, nullptr, &reset_all_handle);
LOG_DEBUG("reset_all_handle registed ", VALUE(getpid()));
reset_handle_registed = true;
}
return 0;
}