CXX=clang++
WARNS=-Wall -Wextra -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
#-Wmissing-variable-declarations
-CXXFLAGS=$(WARNS) -std=c++20 -DNETPOLL_USE_LIBUV -D_GNU_SOURCE
+CXXFLAGS=$(WARNS) -std=c++20 -D_GNU_SOURCE
USE_UV=1
USE_TLS=1
USE_LUA=1
static pid_t current_child = -1;
static int current_result = 0;
-#ifdef NETPOLL_USE_LIBUV
+#ifdef HAS_UV
#include <uv.h>
static uv_signal_t uvsigchld, uvsigint;
#define HANDLE_ARG [[maybe_unused]] uv_signal_t *handle,
if (sigaction(SIGPIPE, &sa, NULL) == -1)
perror("sigaction");
-#ifndef NETPOLL_USE_LIBUV
+#ifndef HAS_UV
sa.sa_handler = job_child;
sa.sa_flags = SA_RESTART;
if (sigaction(SIGCHLD, &sa, NULL) == -1)
}
void job_fini(void)
{
-#ifdef NETPOLL_USE_LIBUV
+#ifdef HAS_UV
uv_close((uv_handle_t *)&uvsigchld, 0);
uv_close((uv_handle_t *)&uvsigint, 0);
#endif
}
void job_process_begin(void)
{
-#ifndef NETPOLL_USE_LIBUV
+#ifndef HAS_UV
sigset_t mask;
sigemptyset(&mask);
sigaddset(&mask, SIGCHLD);
void job_process_end(void)
{
job_process();
-#ifndef NETPOLL_USE_LIBUV
+#ifndef HAS_UV
sigset_t mask;
sigemptyset(&mask);
sigaddset(&mask, SIGCHLD);
static struct net_pollfd fds[NETPOLL_MAXFDS] = {};
static int nfds = 0;
-#if defined(NETPOLL_USE_POLL)
+#ifndef HAS_UV
static struct pollfd pollfds[NETPOLL_MAXFDS] = {};
static int lastptr = 0;
void init(void)
*out = fds[lastptr-1];
return ev;
}
-#elif defined(NETPOLL_USE_LIBUV)
+#else
#include <uv.h>
#define container_of(ptr, type, member) ((type *)((char *)(ptr) - offsetof(type, member)))
struct polldata {
*out = fds[lastptr-1];
return ev;
}
-#else
-#error pick a netpoll implementation
#endif
static int search(SOCKET fd) {
del_impl(i);
memmove(fds+i, fds+i+1, sizeof(fds[0])*(nfds-(i+1)));
nfds--;
-#ifndef NETPOLL_USE_LIBUV
+#ifndef HAS_UV
closesocket(fd);
#endif
}