1 #ifndef _POSIX_C_SOURCE
2 #define _POSIX_C_SOURCE 200809L
8 lua_Number
tv2number(struct timespec
*tv
) {
9 return tv
->tv_sec
+ tv
->tv_nsec
* 1e-9;
12 int lc_time_realtime(lua_State
*L
) {
14 clock_gettime(CLOCK_REALTIME
, &t
);
15 lua_pushnumber(L
, tv2number(&t
));
19 int lc_time_monotonic(lua_State
*L
) {
21 clock_gettime(CLOCK_MONOTONIC
, &t
);
22 lua_pushnumber(L
, tv2number(&t
));
26 int luaopen_util_time(lua_State
*L
) {
27 lua_createtable(L
, 0, 2);
29 lua_pushcfunction(L
, lc_time_realtime
);
30 lua_setfield(L
, -2, "now");
31 lua_pushcfunction(L
, lc_time_monotonic
);
32 lua_setfield(L
, -2, "monotonic");