1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (c) 2019 Linaro Limited. All rights reserved.
4 * Author: Rafael David Tinoco <rafael.tinoco@linaro.org>
5 */
6
7 #include "config.h"
8 #include "tst_test.h"
9 #include "tst_timer.h"
10 #include "tst_safe_clocks.h"
11 #include "lapi/syscalls.h"
12 #include "lapi/posix_clocks.h"
13 #include <time.h>
14 #include <pwd.h>
15 #include <sys/timex.h>
16 #include <sys/types.h>
17 #include "lapi/timex.h"
18
19 static int sys_clock_adjtime(clockid_t, struct timex *);
20 static void timex_show(char *, struct timex);
21
22 /*
23 * bad pointer w/ libc causes SIGSEGV signal, call syscall directly
24 */
sys_clock_adjtime(clockid_t clk_id,struct timex * txc)25 static int sys_clock_adjtime(clockid_t clk_id, struct timex *txc)
26 {
27 return tst_syscall(__NR_clock_adjtime, clk_id, txc);
28 }
29
timex_show(char * given,struct timex txc)30 static void timex_show(char *given, struct timex txc)
31 {
32 tst_res(TINFO, "%s\n"
33 " mode: %d\n"
34 " offset: %ld\n"
35 " frequency: %ld\n"
36 " maxerror: %ld\n"
37 " esterror: %ld\n"
38 " status: %d (0x%x)\n"
39 " time_constant: %ld\n"
40 " precision: %ld\n"
41 " tolerance: %ld\n"
42 " tick: %ld\n"
43 " raw time: %d(s) %d(us)",
44 given,
45 txc.modes,
46 txc.offset,
47 txc.freq,
48 txc.maxerror,
49 txc.esterror,
50 txc.status,
51 txc.status,
52 txc.constant,
53 txc.precision,
54 txc.tolerance,
55 txc.tick,
56 (int)txc.time.tv_sec,
57 (int)txc.time.tv_usec);
58 }
59