aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--teal-src/util/poll.d.tl5
-rw-r--r--util-src/poll.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/teal-src/util/poll.d.tl b/teal-src/util/poll.d.tl
index 7e346161..28fd982b 100644
--- a/teal-src/util/poll.d.tl
+++ b/teal-src/util/poll.d.tl
@@ -19,6 +19,11 @@ local record lib
new : function () : state
ENOENT : integer
EEXIST : integer
+ enum api_backend
+ "epoll"
+ "select"
+ end
+ api : api_backend
end
return lib
diff --git a/util-src/poll.c b/util-src/poll.c
index be0f6ffd..4bd897ae 100644
--- a/util-src/poll.c
+++ b/util-src/poll.c
@@ -14,8 +14,10 @@
#if defined(__linux__)
#define USE_EPOLL
+#define POLL_BACKEND "epoll"
#else
#define USE_SELECT
+#define POLL_BACKEND "select"
#endif
#ifdef USE_EPOLL
@@ -31,12 +33,7 @@
#include <lualib.h>
#include <lauxlib.h>
-#ifdef USE_EPOLL
-#define STATE_MT "util.poll<epoll>"
-#endif
-#ifdef USE_SELECT
-#define STATE_MT "util.poll<select>"
-#endif
+#define STATE_MT "util.poll<" POLL_BACKEND ">"
#if (LUA_VERSION_NUM == 501)
#define luaL_setmetatable(L, tname) luaL_getmetatable(L, tname); lua_setmetatable(L, -2)
@@ -487,6 +484,9 @@ int luaopen_util_poll(lua_State *L) {
push_errno(EEXIST);
push_errno(ENOENT);
+ lua_pushliteral(L, POLL_BACKEND);
+ lua_setfield(L, -2, "api");
+
}
return 1;
}