util.time: Convert to C
authorKim Alvefur <zash@zash.se>
Thu, 09 Mar 2017 04:34:28 +0100
changeset 9165 8ad1fe9d26d4
parent 9164 da154ced7de4
child 9166 6b1f46730217
util.time: Convert to C
util-src/GNUmakefile
util-src/time.c
util/time.lua
--- a/util-src/GNUmakefile	Thu Aug 09 20:27:04 2018 +0100
+++ b/util-src/GNUmakefile	Thu Mar 09 04:34:28 2017 +0100
@@ -6,7 +6,7 @@
 INSTALL_DATA=install -m644
 TARGET?=../util/
 
-ALL=encodings.so hashes.so net.so pposix.so signal.so table.so ringbuffer.so
+ALL=encodings.so hashes.so net.so pposix.so signal.so table.so ringbuffer.so time.so
 
 ifdef RANDOM
 ALL+=crand.so
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util-src/time.c	Thu Mar 09 04:34:28 2017 +0100
@@ -0,0 +1,24 @@
+#define _POSIX_C_SOURCE 199309L
+
+#include <time.h>
+#include <lua.h>
+
+lua_Number tv2number(struct timespec *tv) {
+	return tv->tv_sec + tv->tv_nsec * 1e-9;
+}
+
+int lc_time_realtime(lua_State *L) {
+	struct timespec t;
+	clock_gettime(CLOCK_REALTIME, &t);
+	lua_pushnumber(L, tv2number(&t));
+	return 1;
+}
+
+int luaopen_util_time(lua_State *L) {
+	lua_createtable(L, 0, 2);
+	{
+		lua_pushcfunction(L, lc_time_realtime);
+		lua_setfield(L, -2, "now");
+	}
+	return 1;
+}
--- a/util/time.lua	Thu Aug 09 20:27:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
--- Import gettime() from LuaSocket, as a way to access high-resolution time
--- in a platform-independent way
-
-local socket_gettime = require "socket".gettime;
-
-return {
-	now = socket_gettime;
-}