mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-17 13:00:43 +08:00
Y2038: add _TIME_BITS support
This makes all previously defined Y2038-proof API types, functions and implementations the default when _TIME_BITS==64 and __WORDSIZE==32 (so that 64-bit architectures are unaffected). Note: it is assumed that the API is consistent, i.e. for each API type which is enabled here, all API functions which depend on this type are enabled and mapped to Y2038-proof implementations.
This commit is contained in:
parent
f1869e1122
commit
3500dd283b
@ -364,6 +364,25 @@
|
||||
# define __USE_FILE_OFFSET64 1
|
||||
#endif
|
||||
|
||||
/* we need to know the word size in order to check the time size */
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if defined _TIME_BITS
|
||||
# if _TIME_BITS == 64
|
||||
# if ! defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
|
||||
# error _TIME_BIT==64 is allowed only when _FILE_OFFSET_BITS==64
|
||||
# elif __WORDSIZE == 32
|
||||
# define __USE_TIME_BITS64 1
|
||||
# endif
|
||||
# elif __TIME_BITS == 32
|
||||
# if __WORDSIZE > 32
|
||||
# error __TIME_BITS=32 is not compatible with __WORDSIZE > 32
|
||||
# endif
|
||||
# else
|
||||
# error Invalid _TIME_BITS value (can only be 32 or 64)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined _DEFAULT_SOURCE
|
||||
# define __USE_MISC 1
|
||||
#endif
|
||||
|
@ -210,14 +210,27 @@ extern int stat (const char *__restrict __file,
|
||||
extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
|
||||
#else
|
||||
# ifdef __REDIRECT_NTH
|
||||
# ifdef __USE_TIME_BITS64
|
||||
extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
|
||||
struct stat *__restrict __buf), __stat64_time64)
|
||||
__nonnull ((1, 2));
|
||||
extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), __fstat64_time64)
|
||||
__nonnull ((2));
|
||||
# else
|
||||
extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
|
||||
struct stat *__restrict __buf), stat64)
|
||||
__nonnull ((1, 2));
|
||||
extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
|
||||
__nonnull ((2));
|
||||
# endif
|
||||
# else
|
||||
# define stat stat64
|
||||
# define fstat fstat64
|
||||
# ifdef __USE_TIME_BITS64
|
||||
# define stat stat64_time64
|
||||
# define fstat fstat64_time64
|
||||
# else
|
||||
# define stat stat64
|
||||
# define fstat fstat64
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifdef __USE_LARGEFILE64
|
||||
@ -260,12 +273,23 @@ extern int lstat (const char *__restrict __file,
|
||||
struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
|
||||
# else
|
||||
# ifdef __REDIRECT_NTH
|
||||
# ifdef __USE_TIME_BITS64
|
||||
extern int __REDIRECT_NTH (lstat,
|
||||
(const char *__restrict __file,
|
||||
struct stat *__restrict __buf), __lstat64_time64)
|
||||
__nonnull ((1, 2));
|
||||
# else
|
||||
extern int __REDIRECT_NTH (lstat,
|
||||
(const char *__restrict __file,
|
||||
struct stat *__restrict __buf), lstat64)
|
||||
__nonnull ((1, 2));
|
||||
# endif
|
||||
# else
|
||||
# define lstat lstat64
|
||||
# ifdef __USE_TIME_BITS64
|
||||
# define lstat __lstat64_time64
|
||||
# else
|
||||
# define lstat lstat64
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
# ifdef __USE_LARGEFILE64
|
||||
@ -357,6 +381,15 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
|
||||
#ifdef __USE_ATFILE
|
||||
/* Set file access and modification times relative to directory file
|
||||
descriptor. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (utimensat, (int __fd, const char *__path,
|
||||
const struct timespec __times[2], int __flags),
|
||||
__utimensat64) __THROW __nonnull((2));
|
||||
# else
|
||||
# define utimensat __utimensat64
|
||||
# endif
|
||||
#endif
|
||||
extern int utimensat (int __fd, const char *__path,
|
||||
const struct timespec __times[2],
|
||||
int __flags)
|
||||
@ -365,6 +398,14 @@ extern int utimensat (int __fd, const char *__path,
|
||||
|
||||
#ifdef __USE_XOPEN2K8
|
||||
/* Set file access and modification times of the file associated with FD. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (futimens, (int __fd, const struct timespec __times[2]),
|
||||
__futimens64) __THROW;
|
||||
# else
|
||||
# define futimens __futimens64
|
||||
# endif
|
||||
#endif
|
||||
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
|
||||
#endif
|
||||
|
||||
@ -403,6 +444,21 @@ extern int __fxstatat (int __ver, int __fildes, const char *__filename,
|
||||
__THROW __nonnull ((3, 4));
|
||||
#else
|
||||
# ifdef __REDIRECT_NTH
|
||||
# ifdef __USE_TIME_BITS64
|
||||
extern int __REDIRECT_NTH (__fxstat, (int __ver, int __fildes,
|
||||
struct stat *__stat_buf), __fxstat64_time64)
|
||||
__nonnull ((3));
|
||||
extern int __REDIRECT_NTH (__xstat, (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf), __xstat64_time64)
|
||||
__nonnull ((2, 3));
|
||||
extern int __REDIRECT_NTH (__lxstat, (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf), __lxstat64_time64)
|
||||
__nonnull ((2, 3));
|
||||
extern int __REDIRECT_NTH (__fxstatat, (int __ver, int __fildes,
|
||||
const char *__filename,
|
||||
struct stat *__stat_buf, int __flag),
|
||||
__fxstatat64_time64) __nonnull ((3, 4));
|
||||
# else
|
||||
extern int __REDIRECT_NTH (__fxstat, (int __ver, int __fildes,
|
||||
struct stat *__stat_buf), __fxstat64)
|
||||
__nonnull ((3));
|
||||
@ -416,11 +472,18 @@ extern int __REDIRECT_NTH (__fxstatat, (int __ver, int __fildes,
|
||||
const char *__filename,
|
||||
struct stat *__stat_buf, int __flag),
|
||||
__fxstatat64) __nonnull ((3, 4));
|
||||
# endif
|
||||
|
||||
# else
|
||||
# define __fxstat __fxstat64
|
||||
# define __xstat __xstat64
|
||||
# define __lxstat __lxstat64
|
||||
# ifdef __USE_TIME_BITS64
|
||||
# define __fxstat __fxstat64_time64
|
||||
# define __xstat __xstat64_time64
|
||||
# define __lxstat __lxstat64_time64
|
||||
# else
|
||||
# define __fxstat __fxstat64
|
||||
# define __xstat __xstat64
|
||||
# define __lxstat __lxstat64
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
16
io/utime.h
16
io/utime.h
@ -27,20 +27,30 @@
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <bits/types.h>
|
||||
#include <bits/types/time_t.h>
|
||||
|
||||
#if defined __USE_XOPEN || defined __USE_XOPEN2K
|
||||
# include <bits/types/time_t.h>
|
||||
#endif
|
||||
|
||||
/* Structure describing file times. */
|
||||
/* Structure describing file times, 32- or 64-bit time. */
|
||||
struct utimbuf
|
||||
{
|
||||
__time_t actime; /* Access time. */
|
||||
__time_t modtime; /* Modification time. */
|
||||
time_t actime; /* Access time. */
|
||||
time_t modtime; /* Modification time. */
|
||||
};
|
||||
|
||||
/* Set the access and modification times of FILE to those given in
|
||||
*FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (utime, (const char *__file,
|
||||
const struct utimbuf *__file_times),
|
||||
__utime64) __THROW __nonnull ((1));
|
||||
# else
|
||||
# define utime __utime64
|
||||
# endif
|
||||
#endif
|
||||
extern int utime (const char *__file,
|
||||
const struct utimbuf *__file_times)
|
||||
__THROW __nonnull ((1));
|
||||
|
@ -165,6 +165,34 @@ This macro was introduced as part of the Large File Support extension
|
||||
(LFS).
|
||||
@end defvr
|
||||
|
||||
@defvr Macro _TIME_BITS
|
||||
This macro determines the bit size of @code{time_t} (and therefore the
|
||||
bit size of all @code{time_t} derived types and the prototypes of all
|
||||
related functions). If @code{_TIME_BITS} is undefined, the bit size of
|
||||
time_t equals the bit size of the architecture.
|
||||
|
||||
If @code{_TIME_BITS} is undefined, or if @code{_TIME_BITS} is defined
|
||||
to the value @code{32} and @code{__WORDSIZE} is defined to the value
|
||||
@code{32}, or or if @code{_TIME_BITS} is defined to the value @code{64}
|
||||
and @code{__WORDSIZE} is defined to the value @code{64}, nothing changes.
|
||||
|
||||
If @code{_TIME_BITS} is defined to the value @code{64} and if
|
||||
@code{__WORDSIZE} is defined to the value @code{32}, then the @w{64 bit}
|
||||
time API and implementation are used even though the architecture word
|
||||
size is @code{32}. Also, if the kernel provides @w{64 bit} time support,
|
||||
it is used; otherwise, the @w{32 bit} kernel time support is used (with
|
||||
no provision to address kernel Y2038 shortcomings).
|
||||
|
||||
If @code{_TIME_BITS} is defined to the value @code{32} and if
|
||||
@code{__WORDSIZE} is defined to the value @code{64}, then a compile-time
|
||||
error is emitted.
|
||||
|
||||
If @code{_TIME_BITS} is defined to a value different from both @code{32}
|
||||
and @code{64}, then a compile-time error is emitted.
|
||||
|
||||
This macro was introduced as part of the Y2038 support.
|
||||
@end defvr
|
||||
|
||||
@defvr Macro _ISOC99_SOURCE
|
||||
@standards{GNU, (none)}
|
||||
If this macro is defined, features from ISO C99 are included. Since
|
||||
|
@ -99,6 +99,18 @@ __BEGIN_DECLS
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (select, (int __nfds,
|
||||
fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
struct timeval *__restrict __timeout),
|
||||
__select64);
|
||||
# else
|
||||
# define select __select64
|
||||
# endif
|
||||
#endif
|
||||
extern int select (int __nfds, fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
@ -111,6 +123,19 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (pselect, (int __nfds,
|
||||
fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
const struct timespec *__restrict __timeout,
|
||||
const __sigset_t *__restrict __sigmask),
|
||||
__pselect64);
|
||||
# else
|
||||
# define pselect __pselect64
|
||||
# endif
|
||||
#endif
|
||||
extern int pselect (int __nfds, fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
|
@ -74,6 +74,15 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
|
||||
extern int sched_get_priority_min (int __algorithm) __THROW;
|
||||
|
||||
/* Get the SCHED_RR interval for the named process. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (sched_rr_get_interval,
|
||||
(__pid_t __pid, struct timespec *__t),
|
||||
__sched_rr_get_interval_time64) __THROW;
|
||||
# else
|
||||
# define sched_rr_get_interval __sched_rr_get_interval_time64
|
||||
# endif
|
||||
#endif
|
||||
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
|
||||
|
||||
|
||||
|
@ -84,6 +84,15 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
|
||||
|
||||
/* Return resource usage information on process indicated by WHO
|
||||
and put it in *USAGE. Returns 0 for success, -1 for failure. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (getrusage, (__rusage_who_t __who,
|
||||
struct rusage *__usage),
|
||||
__getrusage64) __THROW;
|
||||
# else
|
||||
# define getrusage __getrusage64
|
||||
# endif
|
||||
#endif
|
||||
extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
|
||||
|
||||
/* Return the highest priority of any process specified by WHICH and WHO
|
||||
|
22
rt/mqueue.h
22
rt/mqueue.h
@ -73,6 +73,17 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
|
||||
#ifdef __USE_XOPEN2K
|
||||
/* Receive the oldest from highest priority messages in message queue
|
||||
MQDES, stop waiting if ABS_TIMEOUT expires. */
|
||||
# ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern ssize_t __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
|
||||
char *__restrict __msg_ptr, size_t __msg_len,
|
||||
unsigned int *__restrict __msg_prio,
|
||||
const struct timespec *__restrict __abs_timeout),
|
||||
__mq_timedreceive64) __nonnull((2, 5));
|
||||
# else
|
||||
# define mq_timedreceive __mq_timedreceive64
|
||||
# endif
|
||||
# endif
|
||||
extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
|
||||
size_t __msg_len,
|
||||
unsigned int *__restrict __msg_prio,
|
||||
@ -81,6 +92,17 @@ extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
|
||||
|
||||
/* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
|
||||
on full message queue if ABS_TIMEOUT expires. */
|
||||
# ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
|
||||
const char *__msg_ptr, size_t __msg_len,
|
||||
unsigned int __msg_prio,
|
||||
const struct timespec *__abs_timeout),
|
||||
__mq_timedsend64) __nonnull((2, 5));
|
||||
# else
|
||||
# define mq_timedsend __mq_timedsend64
|
||||
# endif
|
||||
# endif
|
||||
extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
|
||||
size_t __msg_len, unsigned int __msg_prio,
|
||||
const struct timespec *__abs_timeout)
|
||||
|
@ -266,6 +266,16 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (sigtimedwait, (const sigset_t *__restrict __set,
|
||||
siginfo_t *__restrict __info,
|
||||
const struct timespec *__restrict __timeout),
|
||||
__sigtimedwait64) __nonnull ((1));
|
||||
# else
|
||||
# define sigtimedwait __sigtimedwait64
|
||||
# endif
|
||||
#endif
|
||||
extern int sigtimedwait (const sigset_t *__restrict __set,
|
||||
siginfo_t *__restrict __info,
|
||||
const struct timespec *__restrict __timeout)
|
||||
|
@ -765,6 +765,17 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
|
||||
|
||||
#ifdef __USE_XOPEN2K
|
||||
/* Wait until lock becomes available, or specified time passes. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (pthread_mutex_timedlock,
|
||||
(pthread_mutex_t *__restrict __mutex,
|
||||
const struct timespec *__restrict __abstime),
|
||||
__pthread_mutex_timedlock64)
|
||||
__THROWNL __nonnull ((1, 2));
|
||||
# else
|
||||
# define pthread_mutex_timedlock __pthread_mutex_timedlock64
|
||||
# endif
|
||||
#endif
|
||||
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
|
||||
const struct timespec *__restrict
|
||||
__abstime) __THROWNL __nonnull ((1, 2));
|
||||
@ -904,6 +915,17 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
|
||||
|
||||
# ifdef __USE_XOPEN2K
|
||||
/* Try to acquire read lock for RWLOCK or return after specfied time. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (pthread_rwlock_timedrdlock,
|
||||
(pthread_rwlock_t *__restrict __rwlock,
|
||||
const struct timespec *__restrict __abstime),
|
||||
__pthread_rwlock_timedrdlock64)
|
||||
__THROWNL __nonnull ((1, 2));
|
||||
# else
|
||||
# define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
|
||||
# endif
|
||||
#endif
|
||||
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
|
||||
const struct timespec *__restrict
|
||||
__abstime) __THROWNL __nonnull ((1, 2));
|
||||
@ -919,6 +941,17 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
|
||||
|
||||
# ifdef __USE_XOPEN2K
|
||||
/* Try to acquire write lock for RWLOCK or return after specfied time. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (pthread_rwlock_timedwrlock,
|
||||
(pthread_rwlock_t *__restrict __rwlock,
|
||||
const struct timespec *__restrict __abstime),
|
||||
__pthread_rwlock_timedwrlock64)
|
||||
__THROWNL __nonnull ((1, 2));
|
||||
# else
|
||||
# define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
|
||||
# endif
|
||||
#endif
|
||||
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
|
||||
const struct timespec *__restrict
|
||||
__abstime) __THROWNL __nonnull ((1, 2));
|
||||
@ -998,6 +1031,18 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (pthread_cond_timedwait,
|
||||
(pthread_cond_t *__restrict __cond,
|
||||
pthread_mutex_t *__restrict __mutex,
|
||||
const struct timespec *__restrict __abstime),
|
||||
__pthread_cond_timedwait64)
|
||||
__nonnull ((1, 2, 3));
|
||||
# else
|
||||
# define pthread_cond_timedwait __pthread_cond_timedwait64
|
||||
# endif
|
||||
#endif
|
||||
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
|
||||
pthread_mutex_t *__restrict __mutex,
|
||||
const struct timespec *__restrict __abstime)
|
||||
|
@ -57,6 +57,16 @@ extern int sem_wait (sem_t *__sem);
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern struct tm * __REDIRECT (sem_timedwait,
|
||||
(sem_t *__restrict __sem,
|
||||
const struct timespec *__restrict __abstime),
|
||||
__sem_timedwait64);
|
||||
# else
|
||||
# define sem_timedwait __sem_timedwait64
|
||||
# endif
|
||||
#endif
|
||||
extern int sem_timedwait (sem_t *__restrict __sem,
|
||||
const struct timespec *__restrict __abstime);
|
||||
#endif
|
||||
|
@ -46,6 +46,22 @@ typedef __syscall_ulong_t msglen_t;
|
||||
|
||||
/* Structure of record for one message inside the kernel.
|
||||
The type `struct msg' is opaque. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
struct msqid_ds
|
||||
{
|
||||
struct ipc_perm msg_perm; /* structure describing operation permission */
|
||||
__time64_t msg_stime; /* time of last msgsnd command */
|
||||
__time64_t msg_rtime; /* time of last msgrcv command */
|
||||
__time64_t msg_ctime; /* time of last change */
|
||||
unsigned long int __msg_cbytes; /* current number of bytes on queue */
|
||||
msgqnum_t msg_qnum; /* number of messages currently on queue */
|
||||
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
|
||||
__pid_t msg_lspid; /* pid of last msgsnd() */
|
||||
__pid_t msg_lrpid; /* pid of last msgrcv() */
|
||||
unsigned long int __glibc_reserved4;
|
||||
unsigned long int __glibc_reserved5;
|
||||
};
|
||||
#else
|
||||
struct msqid_ds
|
||||
{
|
||||
struct ipc_perm msg_perm; /* structure describing operation permission */
|
||||
@ -60,6 +76,7 @@ struct msqid_ds
|
||||
__syscall_ulong_t __glibc_reserved4;
|
||||
__syscall_ulong_t __glibc_reserved5;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef __USE_MISC
|
||||
|
||||
|
@ -119,11 +119,11 @@ struct stat64
|
||||
struct timespec st_mtim; /* Time of last modification. */
|
||||
struct timespec st_ctim; /* Time of last status change. */
|
||||
# else
|
||||
__time_t st_atime; /* Time of last access. */
|
||||
time_t st_atime; /* Time of last access. */
|
||||
unsigned long int st_atimensec; /* Nscecs of last access. */
|
||||
__time_t st_mtime; /* Time of last modification. */
|
||||
time_t st_mtime; /* Time of last modification. */
|
||||
unsigned long int st_mtimensec; /* Nsecs of last modification. */
|
||||
__time_t st_ctime; /* Time of last status change. */
|
||||
time_t st_ctime; /* Time of last status change. */
|
||||
unsigned long int st_ctimensec; /* Nsecs of last status change. */
|
||||
# endif
|
||||
__ino64_t st_ino; /* File serial number. */
|
||||
|
@ -44,11 +44,30 @@ extern int timerfd_create (__clockid_t __clock_id, int __flags) __THROW;
|
||||
/* Set next expiration time of interval timer source UFD to UTMR. If
|
||||
FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
|
||||
absolute. Optionally return the old expiration time in OTMR. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (timerfd_settime, (int __ufd, int __flags,
|
||||
const struct itimerspec *__utmr,
|
||||
struct itimerspec *__otmr),__timerfd_settime64)
|
||||
__THROW;
|
||||
# else
|
||||
# define timerfd_settime __timerfd_settime64
|
||||
# endif
|
||||
#endif
|
||||
extern int timerfd_settime (int __ufd, int __flags,
|
||||
const struct itimerspec *__utmr,
|
||||
struct itimerspec *__otmr) __THROW;
|
||||
|
||||
/* Return the next expiration time of UFD. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (timerfd_gettime, (int __ufd,
|
||||
struct itimerspec *__otmr),__timerfd_gettime64)
|
||||
__THROW;
|
||||
# else
|
||||
# define timerfd_gettime __timerfd_gettime64
|
||||
# endif
|
||||
#endif
|
||||
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
@ -68,15 +68,43 @@ struct __ntptimeval64
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __adjtimex (struct timex *__ntx) __THROW;
|
||||
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (adjtimex, (struct timex *__ntx),
|
||||
__adjtimex64) __THROW;
|
||||
# else
|
||||
# define adjtimex __adjtimex64
|
||||
# endif
|
||||
#endif
|
||||
extern int adjtimex (struct timex *__ntx) __THROW;
|
||||
|
||||
#ifdef __REDIRECT_NTH
|
||||
#if __WORDSIZE > 32 || ! defined(__USE_TIME_BITS64)
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
|
||||
ntp_gettimex);
|
||||
#else
|
||||
# else
|
||||
extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
|
||||
# define ntp_gettime ntp_gettimex
|
||||
# endif
|
||||
#else
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (ntp_gettimex, (struct ntptimeval *__ntv),
|
||||
__ntp_gettimex64) __THROW;
|
||||
# else
|
||||
# define ntp_gettimex __ntp_gettimex64
|
||||
# endif
|
||||
# define ntp_gettime ntp_gettimex
|
||||
#endif
|
||||
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (ntp_adjtime, (struct timex *__tntx),
|
||||
__ntp_adjtime64) __THROW;
|
||||
# else
|
||||
# define ntp_adjtime __ntp_adjtime64
|
||||
# endif
|
||||
#endif
|
||||
extern int ntp_adjtime (struct timex *__tntx) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
@ -58,6 +58,15 @@ struct msgbuf
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Message queue control operation. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (msgctl, (int __msqid, int __cmd,
|
||||
struct msqid_ds *__buf),
|
||||
__msgctl64) __THROW;
|
||||
# else
|
||||
# define msgctl __msgctl64
|
||||
# endif
|
||||
#endif
|
||||
extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
|
||||
|
||||
/* Get messages queue. */
|
||||
|
@ -4,11 +4,17 @@
|
||||
#include <bits/types.h>
|
||||
#include <bits/types/struct_timespec.h>
|
||||
|
||||
/* Use the original definition for 64-bit arches
|
||||
or when 64-bit-time by default has *not* been requested */
|
||||
#if __WORDSIZE > 32 || ! defined(__USE_TIME_BITS64)
|
||||
/* POSIX.1b structure for timer start values and intervals. */
|
||||
struct itimerspec
|
||||
{
|
||||
struct timespec it_interval;
|
||||
struct timespec it_value;
|
||||
};
|
||||
#else
|
||||
# define itimerspec __itimerspec64
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -4,6 +4,9 @@
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Use the original definition for 64-bit arches
|
||||
or when 64-bit-time by default has *not* been requested */
|
||||
#if __WORDSIZE > 32 || ! defined(__USE_TIME_BITS64)
|
||||
/* POSIX.1b structure for a time value. This is like a `struct timeval' but
|
||||
has nanoseconds instead of microseconds. */
|
||||
struct timespec
|
||||
@ -11,5 +14,9 @@ struct timespec
|
||||
__time_t tv_sec; /* Seconds. */
|
||||
__syscall_slong_t tv_nsec; /* Nanoseconds. */
|
||||
};
|
||||
#else
|
||||
/* Use the 64-bit-time timespec by default */
|
||||
#define timespec __timespec64
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -3,6 +3,9 @@
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Use the original definition for 64-bit arches
|
||||
or when 64-bit-time by default has *not* been requested */
|
||||
# if __WORDSIZE > 32 || ! defined(__USE_TIME_BITS64)
|
||||
/* A time value that is accurate to the nearest
|
||||
microsecond but also has a range of years. */
|
||||
struct timeval
|
||||
@ -10,4 +13,9 @@ struct timeval
|
||||
__time_t tv_sec; /* Seconds. */
|
||||
__suseconds_t tv_usec; /* Microseconds. */
|
||||
};
|
||||
# else
|
||||
/* Use the 64-bit-time timespec by default */
|
||||
# define timeval __timeval64
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -4,6 +4,10 @@
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Returned by `time'. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
typedef __time64_t time_t;
|
||||
#else
|
||||
typedef __time_t time_t;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -66,12 +66,31 @@ typedef void *__restrict __timezone_ptr_t;
|
||||
Returns 0 on success, -1 on errors.
|
||||
NOTE: This form of timezone information is obsolete.
|
||||
Use the functions and variables declared in <time.h> instead. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (gettimeofday, (struct timeval *__restrict __tv,
|
||||
__timezone_ptr_t __tz),
|
||||
__gettimeofday64) __THROW __nonnull((1));
|
||||
# else
|
||||
# define gettimeofday __gettimeofday64
|
||||
# endif
|
||||
#endif
|
||||
extern int gettimeofday (struct timeval *__restrict __tv,
|
||||
__timezone_ptr_t __tz) __THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Set the current time of day and timezone information.
|
||||
This call is restricted to the super-user. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (settimeofday,
|
||||
(const struct timeval *__tv,
|
||||
const struct timezone *__tz),
|
||||
__settimeofday64) __THROW;
|
||||
# else
|
||||
# define settimeofday __settimeofday64
|
||||
# endif
|
||||
# endif
|
||||
extern int settimeofday (const struct timeval *__tv,
|
||||
const struct timezone *__tz)
|
||||
__THROW;
|
||||
@ -80,6 +99,16 @@ extern int settimeofday (const struct timeval *__tv,
|
||||
If OLDDELTA is not NULL, it is filled in with the amount
|
||||
of time adjustment remaining to be done from the last `adjtime' call.
|
||||
This call is restricted to the super-user. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (adjtime,
|
||||
(const struct timeval *__delta,
|
||||
struct timeval *__olddelta),
|
||||
__adjtime64) __THROW;
|
||||
# else
|
||||
# define adjtime __adjtime64
|
||||
# endif
|
||||
# endif
|
||||
extern int adjtime (const struct timeval *__delta,
|
||||
struct timeval *__olddelta) __THROW;
|
||||
#endif
|
||||
@ -130,12 +159,31 @@ typedef int __itimer_which_t;
|
||||
|
||||
/* Set *VALUE to the current setting of timer WHICH.
|
||||
Return 0 on success, -1 on errors. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (getitimer, (__itimer_which_t __which,
|
||||
struct itimerval *__value), __getitimer64)
|
||||
__THROW;
|
||||
# else
|
||||
# define getitimer __getitimer64
|
||||
# endif
|
||||
#endif
|
||||
extern int getitimer (__itimer_which_t __which,
|
||||
struct itimerval *__value) __THROW;
|
||||
|
||||
/* Set the timer WHICH to *NEW. If OLD is not NULL,
|
||||
set *OLD to the old value of timer WHICH.
|
||||
Returns 0 on success, -1 on errors. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (setitimer, (__itimer_which_t __which,
|
||||
const struct itimerval *__restrict __new,
|
||||
struct itimerval *__restrict __old), __setitimer64)
|
||||
__THROW;
|
||||
# else
|
||||
# define setitimer __setitimer64
|
||||
# endif
|
||||
#endif
|
||||
extern int setitimer (__itimer_which_t __which,
|
||||
const struct itimerval *__restrict __new,
|
||||
struct itimerval *__restrict __old) __THROW;
|
||||
@ -143,15 +191,41 @@ extern int setitimer (__itimer_which_t __which,
|
||||
/* Change the access time of FILE to TVP[0] and the modification time of
|
||||
FILE to TVP[1]. If TVP is a null pointer, use the current time instead.
|
||||
Returns 0 on success, -1 on errors. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (utimes, (const char *__file,
|
||||
const struct timeval __tvp[2]), __utimes64)
|
||||
__THROW __nonnull ((1));
|
||||
# else
|
||||
# define utimes __utimes64
|
||||
# endif
|
||||
#endif
|
||||
extern int utimes (const char *__file, const struct timeval __tvp[2])
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Same as `utimes', but does not follow symbolic links. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (lutimes, (const char *__file,
|
||||
const struct timeval __tvp[2]), __lutimes64)
|
||||
__THROW __nonnull ((1));
|
||||
# else
|
||||
# define lutimes __lutimes64
|
||||
# endif
|
||||
#endif
|
||||
extern int lutimes (const char *__file, const struct timeval __tvp[2])
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
/* Same as `utimes', but takes an open file descriptor instead of a name. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (futimes, (int __fd, const struct timeval __tvp[2]),
|
||||
__futimes64) __THROW;
|
||||
# else
|
||||
# define futimes __futimes64
|
||||
# endif
|
||||
#endif
|
||||
extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
|
||||
#endif
|
||||
|
||||
|
161
time/time.h
161
time/time.h
@ -73,16 +73,38 @@ __BEGIN_DECLS
|
||||
extern clock_t clock (void) __THROW;
|
||||
|
||||
/* Return the current time and put it in *TIMER if TIMER is not NULL. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (time, (time_t * __timer),
|
||||
__time64) __THROW;
|
||||
# else
|
||||
# define time __time64
|
||||
# endif
|
||||
#endif
|
||||
extern time_t time (time_t *__timer) __THROW;
|
||||
|
||||
/* Return the difference between TIME1 and TIME0. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern double __REDIRECT (difftime, (time_t __time1, time_t __time0),
|
||||
__difftime64) __THROW;
|
||||
# else
|
||||
# define difftime __difftime64
|
||||
# endif
|
||||
#endif
|
||||
extern double difftime (time_t __time1, time_t __time0)
|
||||
__THROW __attribute__ ((__const__));
|
||||
|
||||
/* Return the `time_t' representation of TP and normalize TP. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (mktime, (struct tm *__tp), __mktime64) __THROW;
|
||||
# else
|
||||
# define mktime __mktime64
|
||||
# endif
|
||||
#endif
|
||||
extern time_t mktime (struct tm *__tp) __THROW;
|
||||
|
||||
|
||||
/* Format TP into S according to FORMAT.
|
||||
Write no more than MAXSIZE characters and return the number
|
||||
of characters written, or 0 if it would exceed MAXSIZE. */
|
||||
@ -117,20 +139,52 @@ extern char *strptime_l (const char *__restrict __s,
|
||||
|
||||
/* Return the `struct tm' representation of *TIMER
|
||||
in Universal Coordinated Time (aka Greenwich Mean Time). */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern struct tm * __REDIRECT (gmtime, (const time_t *__timer),
|
||||
__gmtime64) __THROW;
|
||||
# else
|
||||
# define gmtime __gmtime64
|
||||
# endif
|
||||
#endif
|
||||
extern struct tm *gmtime (const time_t *__timer) __THROW;
|
||||
|
||||
/* Return the `struct tm' representation
|
||||
of *TIMER in the local timezone. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern struct tm * __REDIRECT (localtime, (const time_t *__timer),
|
||||
__localtime64) __THROW;
|
||||
# else
|
||||
# define localtime __localtime64
|
||||
# endif
|
||||
#endif
|
||||
extern struct tm *localtime (const time_t *__timer) __THROW;
|
||||
|
||||
#ifdef __USE_POSIX
|
||||
/* Return the `struct tm' representation of *TIMER in UTC,
|
||||
using *TP to store the result. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern struct tm * __REDIRECT (gmtime_r, (const time_t *__restrict
|
||||
__timer, struct tm *__restrict __tp), __gmtime64_r) __THROW;
|
||||
# else
|
||||
# define gmtime_r __gmtime64_r
|
||||
# endif
|
||||
#endif
|
||||
extern struct tm *gmtime_r (const time_t *__restrict __timer,
|
||||
struct tm *__restrict __tp) __THROW;
|
||||
|
||||
/* Return the `struct tm' representation of *TIMER in local time,
|
||||
using *TP to store the result. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern struct tm * __REDIRECT (localtime_r, (const time_t *__restrict
|
||||
__timer, struct tm *__restrict __tp), __localtime64_r) __THROW;
|
||||
# else
|
||||
# define localtime_r __localtime64_r
|
||||
# endif
|
||||
#endif
|
||||
extern struct tm *localtime_r (const time_t *__restrict __timer,
|
||||
struct tm *__restrict __tp) __THROW;
|
||||
#endif /* POSIX */
|
||||
@ -140,6 +194,14 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
|
||||
extern char *asctime (const struct tm *__tp) __THROW;
|
||||
|
||||
/* Equivalent to `asctime (localtime (timer))'. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern char * __REDIRECT (ctime, (const time_t *__timer),
|
||||
__ctime64) __THROW;
|
||||
# else
|
||||
# define ctime __ctime64
|
||||
# endif
|
||||
#endif
|
||||
extern char *ctime (const time_t *__timer) __THROW;
|
||||
|
||||
#ifdef __USE_POSIX
|
||||
@ -151,6 +213,14 @@ extern char *asctime_r (const struct tm *__restrict __tp,
|
||||
char *__restrict __buf) __THROW;
|
||||
|
||||
/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern char * __REDIRECT (ctime_r, (const time_t *__restrict __timer,
|
||||
char *__restrict __buf), __ctime64_r) __THROW;
|
||||
# else
|
||||
# define ctime_r __ctime64_r
|
||||
# endif
|
||||
#endif
|
||||
extern char *ctime_r (const time_t *__restrict __timer,
|
||||
char *__restrict __buf) __THROW;
|
||||
#endif /* POSIX */
|
||||
@ -179,6 +249,14 @@ extern long int timezone;
|
||||
#ifdef __USE_MISC
|
||||
/* Set the system time to *WHEN.
|
||||
This call is restricted to the superuser. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (stime, (const time_t *__when), __stime64)
|
||||
__THROW;
|
||||
# else
|
||||
# define stime __stime64
|
||||
# endif
|
||||
#endif
|
||||
extern int stime (const time_t *__when) __THROW;
|
||||
#endif
|
||||
|
||||
@ -194,9 +272,23 @@ extern int stime (const time_t *__when) __THROW;
|
||||
localtime package. These are included only for compatibility. */
|
||||
|
||||
/* Like `mktime', but for TP represents Universal Time, not local time. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (timegm, (struct tm *__tp), __timegm64) __THROW;
|
||||
# else
|
||||
# define timegm __timegm64
|
||||
# endif
|
||||
#endif
|
||||
extern time_t timegm (struct tm *__tp) __THROW;
|
||||
|
||||
/* Another name for `mktime'. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern time_t __REDIRECT (timelocal, (struct tm *__tp), __timelocal64) __THROW;
|
||||
# else
|
||||
# define timelocal __timelocal64
|
||||
# endif
|
||||
#endif
|
||||
extern time_t timelocal (struct tm *__tp) __THROW;
|
||||
|
||||
/* Return the number of days in YEAR. */
|
||||
@ -209,17 +301,49 @@ extern int dysize (int __year) __THROW __attribute__ ((__const__));
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
|
||||
struct timespec *__remaining), __nanosleep64);
|
||||
# else
|
||||
# define nanosleep __nanosleep64
|
||||
# endif
|
||||
#endif
|
||||
extern int nanosleep (const struct timespec *__requested_time,
|
||||
struct timespec *__remaining);
|
||||
|
||||
|
||||
/* Get resolution of clock CLOCK_ID. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (clock_getres, (clockid_t __clock_id, struct
|
||||
timespec *__res), __clock_getres64) __THROW;
|
||||
# else
|
||||
# define clock_getres __clock_getres64
|
||||
# endif
|
||||
#endif
|
||||
extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
|
||||
|
||||
/* Get current value of clock CLOCK_ID and store it in TP. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (clock_gettime, (clockid_t __clock_id, struct
|
||||
timespec *__tp), __clock_gettime64) __THROW;
|
||||
# else
|
||||
# define clock_gettime __clock_gettime64
|
||||
# endif
|
||||
#endif
|
||||
extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
|
||||
|
||||
/* Set clock CLOCK_ID to value TP. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (clock_settime, (clockid_t __clock_id, const struct
|
||||
timespec *__tp), __clock_settime64) __THROW;
|
||||
# else
|
||||
# define clock_settime __clock_settime64
|
||||
# endif
|
||||
#endif
|
||||
extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
|
||||
__THROW;
|
||||
|
||||
@ -228,6 +352,15 @@ extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
|
||||
const struct timespec *__req, struct timespec *__rem),
|
||||
__clock_nanosleep64) __THROW;
|
||||
# else
|
||||
# define clock_nanosleep __clock_nanosleep64
|
||||
# endif
|
||||
#endif
|
||||
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
|
||||
const struct timespec *__req,
|
||||
struct timespec *__rem);
|
||||
@ -246,11 +379,29 @@ extern int timer_create (clockid_t __clock_id,
|
||||
extern int timer_delete (timer_t __timerid) __THROW;
|
||||
|
||||
/* Set timer TIMERID to VALUE, returning old value in OVALUE. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (timer_settime, (timer_t __timerid, int __flags,
|
||||
const struct itimerspec *__restrict __value,
|
||||
struct itimerspec *__restrict __ovalue),
|
||||
__timer_settime64) __THROW;
|
||||
# else
|
||||
# define timer_settime __timer_settime64
|
||||
# endif
|
||||
#endif
|
||||
extern int timer_settime (timer_t __timerid, int __flags,
|
||||
const struct itimerspec *__restrict __value,
|
||||
struct itimerspec *__restrict __ovalue) __THROW;
|
||||
|
||||
/* Get current value of timer TIMERID and store it in VALUE. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (timer_gettime, (timer_t __timerid, struct
|
||||
itimerspec *__value), __timer_gettime64) __THROW __nonnull ((1));
|
||||
# else
|
||||
# define timer_gettime __timer_gettime64
|
||||
# endif
|
||||
#endif
|
||||
extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
|
||||
__THROW;
|
||||
|
||||
@ -261,6 +412,14 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
|
||||
|
||||
#ifdef __USE_ISOC11
|
||||
/* Set TS to calendar time based in time base BASE. */
|
||||
#ifdef __USE_TIME_BITS64
|
||||
# if defined(__REDIRECT)
|
||||
extern int __REDIRECT (timespec_get, (struct timespec *__ts, int __base),
|
||||
__timespec_get64) __THROW __nonnull ((1));
|
||||
# else
|
||||
# define timespec_get __timespec_get64
|
||||
# endif
|
||||
#endif
|
||||
extern int timespec_get (struct timespec *__ts, int __base)
|
||||
__THROW __nonnull ((1));
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user