master
 1/* Copyright (C) 1995-2025 Free Software Foundation, Inc.
 2   This file is part of the GNU C Library.
 3
 4   The GNU C Library is free software; you can redistribute it and/or
 5   modify it under the terms of the GNU Lesser General Public
 6   License as published by the Free Software Foundation; either
 7   version 2.1 of the License, or (at your option) any later version.
 8
 9   The GNU C Library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with the GNU C Library; if not, see
16   <https://www.gnu.org/licenses/>.  */
17
18#ifndef	_SYS_TIMEX_H
19#define	_SYS_TIMEX_H	1
20
21#include <features.h>
22#include <sys/time.h>
23
24/* These definitions from linux/timex.h as of 2.6.30.  */
25
26#include <bits/timex.h>
27
28#define NTP_API	4	/* NTP API version */
29
30struct ntptimeval
31{
32  struct timeval time;	/* current time (ro) */
33  long int maxerror;	/* maximum error (us) (ro) */
34  long int esterror;	/* estimated error (us) (ro) */
35  long int tai;		/* TAI offset (ro) */
36
37  long int __glibc_reserved1;
38  long int __glibc_reserved2;
39  long int __glibc_reserved3;
40  long int __glibc_reserved4;
41};
42
43/* Clock states (time_state) */
44#define TIME_OK		0	/* clock synchronized, no leap second */
45#define TIME_INS	1	/* insert leap second */
46#define TIME_DEL	2	/* delete leap second */
47#define TIME_OOP	3	/* leap second in progress */
48#define TIME_WAIT	4	/* leap second has occurred */
49#define TIME_ERROR	5	/* clock not synchronized */
50#define TIME_BAD	TIME_ERROR /* bw compat */
51
52/* Maximum time constant of the PLL.  */
53#define MAXTC		6
54
55__BEGIN_DECLS
56
57#ifndef __USE_TIME64_REDIRECTS
58extern int adjtimex (struct timex *__ntx) __THROW __nonnull ((1));
59extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW __nonnull ((1));
60
61# ifdef __REDIRECT_NTH
62extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
63                           ntp_gettimex) __nonnull ((1));
64# else
65#  define ntp_gettime ntp_gettimex
66# endif
67extern int ntp_adjtime (struct timex *__tntx) __THROW __nonnull ((1));
68#else
69# ifdef __REDIRECT_NTH
70extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
71                           ___adjtimex64) __nonnull ((1));
72extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
73                           __ntp_gettime64) __nonnull ((1));
74extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
75                           __ntp_gettimex64) __nonnull ((1));
76extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
77                           ___adjtimex64) __nonnull ((1));
78# else
79#  define adjtimex ___adjtimex64
80#  define ntp_adjtime ___adjtimex64
81#  define ntp_gettime __ntp_gettime64
82#  define ntp_gettimex __ntp_gettimex64
83# endif
84#endif
85
86__END_DECLS
87
88#endif /* sys/timex.h */