summaryrefslogtreecommitdiffstats
path: root/src/lib/clock.lua
blob: 60ee9f6bfa6dd711320d2a0ba091e757be39cbe2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
-- Copyright (c) 2018-2021, OARC, Inc.
-- All rights reserved.
--
-- This file is part of dnsjit.
--
-- dnsjit is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- dnsjit is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with dnsjit.  If not, see <http://www.gnu.org/licenses/>.

-- dnsjit.lib.clock
-- Clock and time functions
--   local clock = require("dnsjit.lib.clock")
--   local sec, nsec = clock.monotonic()
--
-- Functions to get the time from system-wide clocks.
module(...,package.seeall)

require("dnsjit.lib.clock_h")
local C = require("ffi").C

Clock = {}

-- Return the current seconds and nanoseconds (as a list) from the realtime
-- clock.
function Clock.realtime()
    local ts = C.lib_clock_gettime("LIB_CLOCK_REALTIME")
    return tonumber(ts.sec), tonumber(ts.nsec)
end

-- Return the current seconds and nanoseconds (as a list) from the monotonic
-- clock.
function Clock.monotonic()
    local ts = C.lib_clock_gettime("LIB_CLOCK_MONOTONIC")
    return tonumber(ts.sec), tonumber(ts.nsec)
end

-- clock_gettime (2)
return Clock