# HG changeset patch # User Kim Alvefur # Date 1489030468 -3600 # Node ID 8ad1fe9d26d4719f1de500ebc3d8f7ce6374cca8 # Parent da154ced7de45029e983d94e4d90f66d4b31b2a9 util.time: Convert to C diff -r da154ced7de4 -r 8ad1fe9d26d4 util-src/GNUmakefile --- 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 diff -r da154ced7de4 -r 8ad1fe9d26d4 util-src/time.c --- /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 +#include + +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; +} diff -r da154ced7de4 -r 8ad1fe9d26d4 util/time.lua --- 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; -}