byztime_sys/
lib.rs

1// Copyright 2021, Akamai Technologies, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use std::os::raw;
5
6#[repr(C)]
7pub struct byztime_ctx {
8    _unused: [u8; 0],
9}
10
11#[derive(Debug, Copy, Clone)]
12#[repr(C)]
13pub struct byztime_stamp {
14    pub seconds: i64,
15    pub nanoseconds: i64,
16}
17
18extern "C" {
19    pub fn byztime_stamp_normalize(stamp: *mut byztime_stamp) -> raw::c_int;
20    pub fn byztime_stamp_add(
21        sum: *mut byztime_stamp,
22        stamp1: *const byztime_stamp,
23        stamp2: *const byztime_stamp,
24    ) -> raw::c_int;
25    pub fn byztime_stamp_sub(
26        diff: *mut byztime_stamp,
27        stamp1: *const byztime_stamp,
28        stamp2: *const byztime_stamp,
29    ) -> raw::c_int;
30    pub fn byztime_stamp_scale(
31        prod: *mut byztime_stamp,
32        stamp: *const byztime_stamp,
33        ppb: i64,
34    ) -> raw::c_int;
35    pub fn byztime_stamp_halve(prod: *mut byztime_stamp, stamp: *const byztime_stamp);
36    pub fn byztime_stamp_cmp(
37        stamp1: *const byztime_stamp,
38        stamp2: *const byztime_stamp,
39    ) -> raw::c_int;
40    pub fn byztime_open_ro(pathname: *const raw::c_char) -> *mut byztime_ctx;
41    pub fn byztime_get_offset(
42        ctx: *mut byztime_ctx,
43        min: *mut byztime_stamp,
44        est: *mut byztime_stamp,
45        max: *mut byztime_stamp,
46    ) -> raw::c_int;
47    pub fn byztime_get_global_time(
48        ctx: *mut byztime_ctx,
49        min: *mut byztime_stamp,
50        est: *mut byztime_stamp,
51        max: *mut byztime_stamp,
52    ) -> raw::c_int;
53    pub fn byztime_set_drift(ctx: *mut byztime_ctx, drift_ppb: i64);
54    pub fn byztime_get_drift(ctx: *const byztime_ctx) -> i64;
55    pub fn byztime_slew(
56        ctx: *mut byztime_ctx,
57        min_rate_ppb: i64,
58        max_rate_ppb: i64,
59        maxerror: *const byztime_stamp,
60    ) -> raw::c_int;
61    pub fn byztime_step(ctx: *mut byztime_ctx) -> raw::c_int;
62    pub fn byztime_open_rw(pathname: *const raw::c_char) -> *mut byztime_ctx;
63    pub fn byztime_set_offset(
64        ctx: *mut byztime_ctx,
65        offset: *const byztime_stamp,
66        error: *const byztime_stamp,
67        as_of: *const byztime_stamp,
68    ) -> raw::c_int;
69    pub fn byztime_get_offset_quick(ctx: *const byztime_ctx, offset: *mut byztime_stamp);
70    pub fn byztime_get_offset_raw(
71        ctx: *const byztime_ctx,
72        offset: *mut byztime_stamp,
73        error: *mut byztime_stamp,
74        as_of: *mut byztime_stamp,
75    );
76    pub fn byztime_update_real_offset(ctx: *mut byztime_ctx) -> raw::c_int;
77    pub fn byztime_get_clock_era(era: *mut raw::c_uchar) -> raw::c_int;
78    pub fn byztime_get_local_time(local_time: *mut byztime_stamp) -> raw::c_int;
79    pub fn byztime_get_real_time(real_time: *mut byztime_stamp) -> raw::c_int;
80    pub fn byztime_close(ctx: *mut byztime_ctx) -> raw::c_int;
81    pub fn byztime_install_sigbus_handler(oact: *mut libc::sigaction) -> raw::c_int;
82    pub fn byztime_handle_sigbus(
83        signo: raw::c_int,
84        info: *mut libc::siginfo_t,
85        context: *mut raw::c_void,
86    );
87}