1 /* adjtime -- adjust the system clock. Linux/Alpha/tv32 version.
2 Copyright (C) 2019-2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
19 #include <shlib-compat.h>
21 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
25 #include <sys/timex.h>
29 unsigned int modes
; /* mode selector */
30 long offset
; /* time offset (usec) */
31 long freq
; /* frequency offset (scaled ppm) */
32 long maxerror
; /* maximum error (usec) */
33 long esterror
; /* estimated error (usec) */
34 int status
; /* clock command/status */
35 long constant
; /* pll time constant */
36 long precision
; /* clock precision (usec) (read only) */
37 long tolerance
; /* clock frequency tolerance (ppm)
40 struct __timeval32 time
; /* (read only) */
41 long tick
; /* (modified) usecs between clock ticks */
43 long ppsfreq
; /* pps frequency (scaled ppm) (ro) */
44 long jitter
; /* pps jitter (us) (ro) */
45 int shift
; /* interval duration (s) (shift) (ro) */
46 long stabil
; /* pps stability (scaled ppm) (ro) */
47 long jitcnt
; /* jitter limit exceeded (ro) */
48 long calcnt
; /* calibration intervals (ro) */
49 long errcnt
; /* calibration errors (ro) */
50 long stbcnt
; /* stability limit exceeded (ro) */
52 int :32; int :32; int :32; int :32;
53 int :32; int :32; int :32; int :32;
54 int :32; int :32; int :32; int :32;
58 attribute_compat_text_section
59 __adjtime_tv32 (const struct __timeval32
*itv
, struct __timeval32
*otv
)
61 struct timeval itv64
= valid_timeval32_to_timeval (*itv
);
64 if (__adjtime (&itv64
, &otv64
) == -1)
67 *otv
= valid_timeval_to_timeval32 (otv64
);
72 attribute_compat_text_section
73 __adjtimex_tv32 (struct timex32
*tx
)
76 memset (&tx64
, 0, sizeof tx64
);
77 tx64
.modes
= tx
->modes
;
78 tx64
.offset
= tx
->offset
;
80 tx64
.maxerror
= tx
->maxerror
;
81 tx64
.esterror
= tx
->esterror
;
82 tx64
.status
= tx
->status
;
83 tx64
.constant
= tx
->constant
;
84 tx64
.precision
= tx
->precision
;
85 tx64
.tolerance
= tx
->tolerance
;
87 tx64
.ppsfreq
= tx
->ppsfreq
;
88 tx64
.jitter
= tx
->jitter
;
89 tx64
.shift
= tx
->shift
;
90 tx64
.stabil
= tx
->stabil
;
91 tx64
.jitcnt
= tx
->jitcnt
;
92 tx64
.calcnt
= tx
->calcnt
;
93 tx64
.errcnt
= tx
->errcnt
;
94 tx64
.stbcnt
= tx
->stbcnt
;
95 tx64
.time
= valid_timeval32_to_timeval (tx
->time
);
97 int status
= __adjtimex (&tx64
);
101 memset (tx
, 0, sizeof *tx
);
102 tx
->modes
= tx64
.modes
;
103 tx
->offset
= tx64
.offset
;
104 tx
->freq
= tx64
.freq
;
105 tx
->maxerror
= tx64
.maxerror
;
106 tx
->esterror
= tx64
.esterror
;
107 tx
->status
= tx64
.status
;
108 tx
->constant
= tx64
.constant
;
109 tx
->precision
= tx64
.precision
;
110 tx
->tolerance
= tx64
.tolerance
;
111 tx
->tick
= tx64
.tick
;
112 tx
->ppsfreq
= tx64
.ppsfreq
;
113 tx
->jitter
= tx64
.jitter
;
114 tx
->shift
= tx64
.shift
;
115 tx
->stabil
= tx64
.stabil
;
116 tx
->jitcnt
= tx64
.jitcnt
;
117 tx
->calcnt
= tx64
.calcnt
;
118 tx
->errcnt
= tx64
.errcnt
;
119 tx
->stbcnt
= tx64
.stbcnt
;
120 tx
->time
= valid_timeval_to_timeval32 (tx64
.time
);
125 strong_alias (__adjtimex_tv32
, __adjtimex_tv32_1
);
126 strong_alias (__adjtimex_tv32
, __adjtimex_tv32_2
);
127 compat_symbol (libc
, __adjtimex_tv32_1
, __adjtimex
, GLIBC_2_0
);
128 compat_symbol (libc
, __adjtimex_tv32_2
, adjtimex
, GLIBC_2_0
);
129 compat_symbol (libc
, __adjtime_tv32
, adjtime
, GLIBC_2_0
);
131 #endif /* SHLIB_COMPAT */