Software /
code /
prosody
Annotate
util-src/time.c @ 10030:98ef41a60fc3
Merge 0.11->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 27 May 2019 19:17:12 +0200 |
parent | 9680:a374905e99ff |
child | 10480:94cacf9fd0ae |
rev | line source |
---|---|
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
1 #ifndef _POSIX_C_SOURCE |
9680
a374905e99ff
util.time: Bump POSIX_C_SOURCE to ensure visibility of CLOCK_MONOTONIC on FreeBSD (fixes #1253)
Matthew Wild <mwild1@gmail.com>
parents:
9164
diff
changeset
|
2 #define _POSIX_C_SOURCE 200809L |
9164
35807f02bdc7
util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents:
9163
diff
changeset
|
3 #endif |
9162 | 4 |
5 #include <time.h> | |
6 #include <lua.h> | |
7 | |
8 lua_Number tv2number(struct timespec *tv) { | |
9 return tv->tv_sec + tv->tv_nsec * 1e-9; | |
10 } | |
11 | |
12 int lc_time_realtime(lua_State *L) { | |
13 struct timespec t; | |
14 clock_gettime(CLOCK_REALTIME, &t); | |
15 lua_pushnumber(L, tv2number(&t)); | |
16 return 1; | |
17 } | |
18 | |
9163 | 19 int lc_time_monotonic(lua_State *L) { |
20 struct timespec t; | |
21 clock_gettime(CLOCK_MONOTONIC, &t); | |
22 lua_pushnumber(L, tv2number(&t)); | |
23 return 1; | |
24 } | |
25 | |
9162 | 26 int luaopen_util_time(lua_State *L) { |
27 lua_createtable(L, 0, 2); | |
28 { | |
29 lua_pushcfunction(L, lc_time_realtime); | |
30 lua_setfield(L, -2, "now"); | |
9163 | 31 lua_pushcfunction(L, lc_time_monotonic); |
32 lua_setfield(L, -2, "monotonic"); | |
9162 | 33 } |
34 return 1; | |
35 } |