2014-10-08 23:19:32 +00:00
|
|
|
/* Internal declarations for sys/timex.h.
|
2022-01-01 18:54:23 +00:00
|
|
|
Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
2014-10-08 23:19:32 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
The GNU C Library 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
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
2014-10-08 23:19:32 +00:00
|
|
|
|
|
|
|
#ifndef _INCLUDE_SYS_TIMEX_H
|
|
|
|
#define _INCLUDE_SYS_TIMEX_H 1
|
|
|
|
|
|
|
|
#include_next <sys/timex.h>
|
|
|
|
|
Installed header hygiene (BZ#20366): Test of installed headers.
This adds a test to ensure that the problems fixed in the last several
patches do not recur. Each directory checks the headers that it
installs for two properties: first, each header must be compilable in
isolation, as both C and C++, under a representative combination of
language and library conformance levels; second, there is a blacklist
of identifiers that may not appear in any installed header, currently
consisting of the legacy BSD typedefs. (There is an exemption for the
headers that define those typedefs, and for the RPC headers. It may be
necessary to make this more sophisticated if we add more stuff to the
blacklist in the future.)
In order for this test to work correctly, every wrapper header
that actually defines something must guard those definitions with
#ifndef _ISOMAC. This is the existing mechanism used by the conform/
tests to tell wrapper headers not to define anything that the public
header wouldn't, and not to use anything from libc-symbols.h. conform/
only cares for headers that we need to check for standards conformance,
whereas this test applies to *every* header. (Headers in include/ that
are either installed directly, or are internal-use-only and do *not*
correspond to any installed header, are not affected.)
* scripts/check-installed-headers.sh: New script.
* Rules: In each directory that defines header files to be installed,
run check-installed-headers.sh on them as a special test.
* Makefile: Likewise for the headers installed at top level.
* include/aliases.h, include/alloca.h, include/argz.h
* include/arpa/nameser.h, include/arpa/nameser_compat.h
* include/elf.h, include/envz.h, include/err.h
* include/execinfo.h, include/fpu_control.h, include/getopt.h
* include/gshadow.h, include/ifaddrs.h, include/libintl.h
* include/link.h, include/malloc.h, include/mcheck.h
* include/mntent.h, include/netinet/ether.h
* include/nss.h, include/obstack.h, include/printf.h
* include/pty.h, include/resolv.h, include/rpc/auth.h
* include/rpc/auth_des.h, include/rpc/auth_unix.h
* include/rpc/clnt.h, include/rpc/des_crypt.h
* include/rpc/key_prot.h, include/rpc/netdb.h
* include/rpc/pmap_clnt.h, include/rpc/pmap_prot.h
* include/rpc/pmap_rmt.h, include/rpc/rpc.h
* include/rpc/rpc_msg.h, include/rpc/svc.h
* include/rpc/svc_auth.h, include/rpc/xdr.h
* include/rpcsvc/nis_callback.h, include/rpcsvc/nislib.h
* include/rpcsvc/yp.h, include/rpcsvc/ypclnt.h
* include/rpcsvc/ypupd.h, include/shadow.h
* include/stdio_ext.h, include/sys/epoll.h
* include/sys/file.h, include/sys/gmon.h, include/sys/ioctl.h
* include/sys/prctl.h, include/sys/profil.h
* include/sys/statfs.h, include/sys/sysctl.h
* include/sys/sysinfo.h, include/ttyent.h, include/utmp.h
* sysdeps/arm/nacl/include/bits/setjmp.h
* sysdeps/mips/include/sys/asm.h
* sysdeps/unix/sysv/linux/include/sys/sysinfo.h
* sysdeps/unix/sysv/linux/include/sys/timex.h
* sysdeps/x86/fpu/include/bits/fenv.h:
Add #ifndef _ISOMAC guard around internal declarations.
Add multiple-inclusion guard if not already present.
2016-08-24 01:19:17 +00:00
|
|
|
# ifndef _ISOMAC
|
|
|
|
|
2022-05-05 03:01:08 +00:00
|
|
|
extern int __adjtimex (struct timex *__ntx) __nonnull ((1));
|
2014-10-08 23:19:32 +00:00
|
|
|
libc_hidden_proto (__adjtimex)
|
|
|
|
|
2020-04-21 17:12:17 +00:00
|
|
|
# include <time.h>
|
2020-04-21 17:08:33 +00:00
|
|
|
# include <struct___timeval64.h>
|
|
|
|
/* Local definition of 64 bit time supporting timex struct */
|
|
|
|
# if __TIMESIZE == 64
|
|
|
|
# define __timex64 timex
|
2020-04-21 17:14:18 +00:00
|
|
|
# define __clock_adjtime64 __clock_adjtime
|
2020-04-21 17:29:31 +00:00
|
|
|
# define ___adjtimex64 ___adjtimex
|
2020-04-21 23:01:21 +00:00
|
|
|
# define __ntptimeval64 ntptimeval
|
2020-04-22 08:54:01 +00:00
|
|
|
# define __ntp_gettime64 __ntp_gettime
|
2020-04-22 08:49:39 +00:00
|
|
|
# define __ntp_gettimex64 __ntp_gettimex
|
2020-04-21 17:08:33 +00:00
|
|
|
# else
|
|
|
|
|
|
|
|
struct __timex64
|
|
|
|
{
|
|
|
|
unsigned int modes; /* mode selector */
|
|
|
|
int :32; /* pad */
|
|
|
|
long long int offset; /* time offset (usec) */
|
|
|
|
long long int freq; /* frequency offset (scaled ppm) */
|
|
|
|
long long int maxerror; /* maximum error (usec) */
|
|
|
|
long long int esterror; /* estimated error (usec) */
|
|
|
|
int status; /* clock command/status */
|
|
|
|
int :32; /* pad */
|
|
|
|
long long int constant; /* pll time constant */
|
|
|
|
long long int precision; /* clock precision (usec) (read only) */
|
|
|
|
long long int tolerance; /* clock frequency tolerance (ppm) (ro) */
|
|
|
|
struct __timeval64 time; /* (read only, except for ADJ_SETOFFSET) */
|
|
|
|
long long int tick; /* (modified) usecs between clock ticks */
|
|
|
|
long long int ppsfreq; /* pps frequency (scaled ppm) (ro) */
|
|
|
|
long long int jitter; /* pps jitter (us) (ro) */
|
|
|
|
int shift; /* interval duration (s) (shift) (ro) */
|
|
|
|
int :32; /* pad */
|
|
|
|
long long int stabil; /* pps stability (scaled ppm) (ro) */
|
|
|
|
long long int jitcnt; /* jitter limit exceeded (ro) */
|
|
|
|
long long int calcnt; /* calibration intervals (ro) */
|
|
|
|
long long int errcnt; /* calibration errors (ro) */
|
|
|
|
long long int stbcnt; /* stability limit exceeded (ro) */
|
|
|
|
|
|
|
|
int tai; /* TAI offset (ro) */
|
|
|
|
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
int :32;
|
|
|
|
};
|
2022-05-05 03:01:10 +00:00
|
|
|
extern int __clock_adjtime64 (const clockid_t clock_id, struct __timex64 *tx64) __nonnull((2));
|
2020-04-21 17:14:18 +00:00
|
|
|
libc_hidden_proto (__clock_adjtime64);
|
2022-05-05 03:01:08 +00:00
|
|
|
extern int ___adjtimex64 (struct __timex64 *tx64) __nonnull ((1));
|
2020-04-21 17:29:31 +00:00
|
|
|
libc_hidden_proto (___adjtimex64)
|
2020-04-21 23:01:21 +00:00
|
|
|
|
|
|
|
struct __ntptimeval64
|
|
|
|
{
|
|
|
|
struct __timeval64 time; /* current time (ro) */
|
|
|
|
long int maxerror; /* maximum error (us) (ro) */
|
|
|
|
long int esterror; /* estimated error (us) (ro) */
|
|
|
|
long int tai; /* TAI offset (ro) */
|
|
|
|
|
|
|
|
long int __glibc_reserved1;
|
|
|
|
long int __glibc_reserved2;
|
|
|
|
long int __glibc_reserved3;
|
|
|
|
long int __glibc_reserved4;
|
|
|
|
};
|
2022-05-05 03:01:09 +00:00
|
|
|
extern int __ntp_gettime64 (struct __ntptimeval64 *ntv) __nonnull ((1));
|
2020-04-22 08:54:01 +00:00
|
|
|
libc_hidden_proto (__ntp_gettime64)
|
2022-05-05 03:01:09 +00:00
|
|
|
extern int __ntp_gettimex64 (struct __ntptimeval64 *ntv) __nonnull ((1));
|
2020-04-22 08:49:39 +00:00
|
|
|
libc_hidden_proto (__ntp_gettimex64)
|
2020-04-22 08:54:01 +00:00
|
|
|
|
2020-04-21 17:08:33 +00:00
|
|
|
# endif
|
2020-04-21 17:12:17 +00:00
|
|
|
|
|
|
|
/* Convert a known valid struct timex into a struct __timex64. */
|
|
|
|
static inline struct __timex64
|
|
|
|
valid_timex_to_timex64 (const struct timex tx)
|
|
|
|
{
|
|
|
|
struct __timex64 tx64;
|
|
|
|
|
|
|
|
tx64.modes = tx.modes;
|
|
|
|
tx64.offset = tx.offset;
|
|
|
|
tx64.freq = tx.freq;
|
|
|
|
tx64.maxerror = tx.maxerror;
|
|
|
|
tx64.esterror = tx.esterror;
|
|
|
|
tx64.status = tx.status;
|
|
|
|
tx64.constant = tx.constant;
|
|
|
|
tx64.precision = tx.precision;
|
|
|
|
tx64.tolerance = tx.tolerance;
|
|
|
|
tx64.time = valid_timeval_to_timeval64 (tx.time);
|
|
|
|
tx64.tick = tx.tick;
|
|
|
|
tx64.ppsfreq = tx.ppsfreq;
|
|
|
|
tx64.jitter = tx.jitter;
|
|
|
|
tx64.shift = tx.shift;
|
|
|
|
tx64.stabil = tx.stabil;
|
|
|
|
tx64.jitcnt = tx.jitcnt;
|
|
|
|
tx64.calcnt = tx.calcnt;
|
|
|
|
tx64.errcnt = tx.errcnt;
|
|
|
|
tx64.stbcnt = tx.stbcnt;
|
|
|
|
tx64.tai = tx.tai;
|
|
|
|
|
|
|
|
return tx64;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Convert a known valid struct __timex64 into a struct timex. */
|
|
|
|
static inline struct timex
|
|
|
|
valid_timex64_to_timex (const struct __timex64 tx64)
|
|
|
|
{
|
|
|
|
struct timex tx;
|
|
|
|
|
|
|
|
tx.modes = tx64.modes;
|
|
|
|
tx.offset = tx64.offset;
|
|
|
|
tx.freq = tx64.freq;
|
|
|
|
tx.maxerror = tx64.maxerror;
|
|
|
|
tx.esterror = tx64.esterror;
|
|
|
|
tx.status = tx64.status;
|
|
|
|
tx.constant = tx64.constant;
|
|
|
|
tx.precision = tx64.precision;
|
|
|
|
tx.tolerance = tx64.tolerance;
|
|
|
|
tx.time = valid_timeval64_to_timeval (tx64.time);
|
|
|
|
tx.tick = tx64.tick;
|
|
|
|
tx.ppsfreq = tx64.ppsfreq;
|
|
|
|
tx.jitter = tx64.jitter;
|
|
|
|
tx.shift = tx64.shift;
|
|
|
|
tx.stabil = tx64.stabil;
|
|
|
|
tx.jitcnt = tx64.jitcnt;
|
|
|
|
tx.calcnt = tx64.calcnt;
|
|
|
|
tx.errcnt = tx64.errcnt;
|
|
|
|
tx.stbcnt = tx64.stbcnt;
|
|
|
|
tx.tai = tx64.tai;
|
|
|
|
|
|
|
|
return tx;
|
|
|
|
}
|
2020-04-22 22:20:51 +00:00
|
|
|
|
|
|
|
/* Convert a known valid struct ntptimeval into a struct __ntptimeval64. */
|
|
|
|
static inline struct __ntptimeval64
|
|
|
|
valid_ntptimeval_to_ntptimeval64 (const struct ntptimeval ntv)
|
|
|
|
{
|
|
|
|
struct __ntptimeval64 ntv64;
|
|
|
|
|
|
|
|
ntv64.time = valid_timeval_to_timeval64 (ntv.time);
|
|
|
|
ntv64.maxerror = ntv.maxerror;
|
|
|
|
ntv64.esterror = ntv.esterror;
|
|
|
|
ntv64.tai = ntv.tai;
|
|
|
|
ntv64.__glibc_reserved1 = 0;
|
|
|
|
ntv64.__glibc_reserved2 = 0;
|
|
|
|
ntv64.__glibc_reserved3 = 0;
|
|
|
|
ntv64.__glibc_reserved4 = 0;
|
|
|
|
|
|
|
|
return ntv64;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Convert a known valid struct __ntptimeval64 into a struct ntptimeval. */
|
|
|
|
static inline struct ntptimeval
|
|
|
|
valid_ntptimeval64_to_ntptimeval (const struct __ntptimeval64 ntp64)
|
|
|
|
{
|
|
|
|
struct ntptimeval ntp;
|
|
|
|
|
|
|
|
ntp.time = valid_timeval64_to_timeval (ntp64.time);
|
|
|
|
ntp.maxerror = ntp64.maxerror;
|
|
|
|
ntp.esterror = ntp64.esterror;
|
|
|
|
ntp.tai = ntp64.tai;
|
|
|
|
ntp.__glibc_reserved1 = 0;
|
|
|
|
ntp.__glibc_reserved2 = 0;
|
|
|
|
ntp.__glibc_reserved3 = 0;
|
|
|
|
ntp.__glibc_reserved4 = 0;
|
|
|
|
|
|
|
|
return ntp;
|
|
|
|
}
|
Installed header hygiene (BZ#20366): Test of installed headers.
This adds a test to ensure that the problems fixed in the last several
patches do not recur. Each directory checks the headers that it
installs for two properties: first, each header must be compilable in
isolation, as both C and C++, under a representative combination of
language and library conformance levels; second, there is a blacklist
of identifiers that may not appear in any installed header, currently
consisting of the legacy BSD typedefs. (There is an exemption for the
headers that define those typedefs, and for the RPC headers. It may be
necessary to make this more sophisticated if we add more stuff to the
blacklist in the future.)
In order for this test to work correctly, every wrapper header
that actually defines something must guard those definitions with
#ifndef _ISOMAC. This is the existing mechanism used by the conform/
tests to tell wrapper headers not to define anything that the public
header wouldn't, and not to use anything from libc-symbols.h. conform/
only cares for headers that we need to check for standards conformance,
whereas this test applies to *every* header. (Headers in include/ that
are either installed directly, or are internal-use-only and do *not*
correspond to any installed header, are not affected.)
* scripts/check-installed-headers.sh: New script.
* Rules: In each directory that defines header files to be installed,
run check-installed-headers.sh on them as a special test.
* Makefile: Likewise for the headers installed at top level.
* include/aliases.h, include/alloca.h, include/argz.h
* include/arpa/nameser.h, include/arpa/nameser_compat.h
* include/elf.h, include/envz.h, include/err.h
* include/execinfo.h, include/fpu_control.h, include/getopt.h
* include/gshadow.h, include/ifaddrs.h, include/libintl.h
* include/link.h, include/malloc.h, include/mcheck.h
* include/mntent.h, include/netinet/ether.h
* include/nss.h, include/obstack.h, include/printf.h
* include/pty.h, include/resolv.h, include/rpc/auth.h
* include/rpc/auth_des.h, include/rpc/auth_unix.h
* include/rpc/clnt.h, include/rpc/des_crypt.h
* include/rpc/key_prot.h, include/rpc/netdb.h
* include/rpc/pmap_clnt.h, include/rpc/pmap_prot.h
* include/rpc/pmap_rmt.h, include/rpc/rpc.h
* include/rpc/rpc_msg.h, include/rpc/svc.h
* include/rpc/svc_auth.h, include/rpc/xdr.h
* include/rpcsvc/nis_callback.h, include/rpcsvc/nislib.h
* include/rpcsvc/yp.h, include/rpcsvc/ypclnt.h
* include/rpcsvc/ypupd.h, include/shadow.h
* include/stdio_ext.h, include/sys/epoll.h
* include/sys/file.h, include/sys/gmon.h, include/sys/ioctl.h
* include/sys/prctl.h, include/sys/profil.h
* include/sys/statfs.h, include/sys/sysctl.h
* include/sys/sysinfo.h, include/ttyent.h, include/utmp.h
* sysdeps/arm/nacl/include/bits/setjmp.h
* sysdeps/mips/include/sys/asm.h
* sysdeps/unix/sysv/linux/include/sys/sysinfo.h
* sysdeps/unix/sysv/linux/include/sys/timex.h
* sysdeps/x86/fpu/include/bits/fenv.h:
Add #ifndef _ISOMAC guard around internal declarations.
Add multiple-inclusion guard if not already present.
2016-08-24 01:19:17 +00:00
|
|
|
# endif /* _ISOMAC */
|
2014-10-08 23:19:32 +00:00
|
|
|
#endif /* sys/timex.h */
|