Annotate

util-src/time.c @ 13248:db433ed3135c

Merge 0.12->trunk
author Kim Alvefur <zash@zash.se>
date Tue, 25 Jul 2023 12:35:11 +0200
parent 12976:a187600ec7d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 #include <time.h>
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 #include <lua.h>
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
10480
94cacf9fd0ae util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 9680
diff changeset
8 static lua_Number tv2number(struct timespec *tv) {
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 return tv->tv_sec + tv->tv_nsec * 1e-9;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11
10480
94cacf9fd0ae util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 9680
diff changeset
12 static int lc_time_realtime(lua_State *L) {
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 struct timespec t;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 clock_gettime(CLOCK_REALTIME, &t);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 lua_pushnumber(L, tv2number(&t));
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 return 1;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
10480
94cacf9fd0ae util.*.c: Add static qualifiers everywhere
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 9680
diff changeset
19 static int lc_time_monotonic(lua_State *L) {
9163
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
20 struct timespec t;
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
21 clock_gettime(CLOCK_MONOTONIC, &t);
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
22 lua_pushnumber(L, tv2number(&t));
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
23 return 1;
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
24 }
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
25
12976
a187600ec7d6 util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents: 10480
diff changeset
26 int luaopen_prosody_util_time(lua_State *L) {
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 lua_createtable(L, 0, 2);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 {
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 lua_pushcfunction(L, lc_time_realtime);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 lua_setfield(L, -2, "now");
9163
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
31 lua_pushcfunction(L, lc_time_monotonic);
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
32 lua_setfield(L, -2, "monotonic");
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 return 1;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 }
12976
a187600ec7d6 util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents: 10480
diff changeset
36 int luaopen_util_time(lua_State *L) {
a187600ec7d6 util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents: 10480
diff changeset
37 return luaopen_prosody_util_time(L);
a187600ec7d6 util: Add compat for prosody module name change to C sources
Kim Alvefur <zash@zash.se>
parents: 10480
diff changeset
38 }