#define ULOOP_MAX_EVENTS 10
static struct uloop_timeout *first_timeout;
-static int poll_fd;
+static int poll_fd = -1;
bool uloop_cancelled = false;
#ifdef USE_KQUEUE
int uloop_init(void)
{
+ if (poll_fd >= 0)
+ return 0;
+
poll_fd = kqueue();
if (poll_fd < 0)
return -1;
int uloop_init(void)
{
+ if (poll_fd >= 0)
+ return 0;
+
poll_fd = epoll_create(32);
if (poll_fd < 0)
return -1;
void uloop_done(void)
{
+ if (poll_fd < 0)
+ return;
+
close(poll_fd);
+ poll_fd = -1;
}