Dear Community, I do know that the "freeze" time for glibc release is coming, but I would be very happy to receive feedback on this patch. It is the attempt to divide the Y2038 support to smaller chunks, so it would be easier to review. > Exported headers have been modified to provide redirections to 64 bit > functions when __USE_TIME_BITS64 is defined - this exported flag is > set only when _TIME_BITS=64 and _FILE_OFFSET_BITS=64 are set on > compilation time. > For example, when __USE_TIME_BIT64 is defined - calls to clock_settime > are redirected to clock_settime64, which supports setting 64 bit time > in glibc ports with __WORDSIZE==32 and __TIMESIZE != 64. > > This patch is the preparatory one for addressing Y2038 issue and as > such will be inactive until support for _TIME_BITS exported flag is > added, which in turn causes definition of __USE_TIME_BITS64. To emphasize - this patch set will not introduce any harm, as __USE_TIME_BITS64 will be NOT defined until the support for 64 bit time is added to glibc. > --- > io/sys/poll.h | 11 ++ > io/sys/stat.h | 20 ++++ > io/utime.h | 10 ++ > misc/sys/select.h | 27 +++++ > posix/sched.h | 9 ++ > posix/sys/wait.h | 20 ++++ > resolv/netdb.h | 11 ++ > resource/sys/resource.h | 10 ++ > rt/aio.h | 25 ++++- > rt/mqueue.h | 25 +++++ > signal/signal.h | 12 +++ > socket/sys/socket.h | 11 ++ > sysdeps/nptl/pthread.h | 117 +++++++++++++++++++++ > sysdeps/pthread/semaphore.h | 23 ++++ > sysdeps/pthread/threads.h | 33 ++++++ > sysdeps/unix/sysv/linux/bits/time.h | 10 ++ > sysdeps/unix/sysv/linux/sys/timerfd.h | 22 ++++ > sysdeps/unix/sysv/linux/sys/timex.h | 37 ++++++- > sysvipc/sys/msg.h | 10 ++ > sysvipc/sys/sem.h | 21 ++++ > sysvipc/sys/shm.h | 10 ++ > time/sys/time.h | 91 ++++++++++++++++ > time/time.h | 146 > ++++++++++++++++++++++++++ 23 files changed, 705 insertions(+), 6 > deletions(-) > > diff --git a/io/sys/poll.h b/io/sys/poll.h > index 857be0f5ac..4a725ed18e 100644 > --- a/io/sys/poll.h > +++ b/io/sys/poll.h > @@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t > __nfds, int __timeout); extern int ppoll (struct pollfd *__fds, > nfds_t __nfds, const struct timespec *__timeout, > const __sigset_t *__ss); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds, > + const struct timespec *__timeout, > + const __sigset_t *__ss), > + __ppoll64); > +# else > +# define ppoll __ppoll64 > +# endif > +# endif > #endif > > __END_DECLS > diff --git a/io/sys/stat.h b/io/sys/stat.h > index 58c3770622..b3f2f0da99 100644 > --- a/io/sys/stat.h > +++ b/io/sys/stat.h > @@ -361,11 +361,31 @@ extern int utimensat (int __fd, const char > *__path, const struct timespec __times[2], > int __flags) > __THROW __nonnull ((2)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path, > + const struct timespec > __times[2], > + int flags), > + __utimensat64) __nonnull ((2)); > +# else > +# define utimensat __utimensat64 > +# endif > +# endif > #endif > > #ifdef __USE_XOPEN2K8 > /* Set file access and modification times of the file associated > with FD. */ extern int futimens (int __fd, const struct timespec > __times[2]) __THROW; + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec > __times[2]), > + __futimens64); > +# else > +# define futimens __futimens64 > +# endif > +# endif > #endif > > #ifdef __USE_GNU > diff --git a/io/utime.h b/io/utime.h > index 07659016ab..f607bf0aad 100644 > --- a/io/utime.h > +++ b/io/utime.h > @@ -45,6 +45,16 @@ extern int utime (const char *__file, > const struct utimbuf *__file_times) > __THROW __nonnull ((1)); > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (utime, (const char *__file, > + const struct utimbuf > *__file_times), > + __utime64); > +# else > +# define utime __utime64 > +# endif > +#endif > + > __END_DECLS > > #endif /* utime.h */ > diff --git a/misc/sys/select.h b/misc/sys/select.h > index 29d011c2d5..779a6e81b6 100644 > --- a/misc/sys/select.h > +++ b/misc/sys/select.h > @@ -103,6 +103,19 @@ extern int select (int __nfds, fd_set > *__restrict __readfds, fd_set *__restrict __exceptfds, > struct timeval *__restrict __timeout); > > +#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 > + > #ifdef __USE_XOPEN2K > /* Same as above only that the TIMEOUT value is given with higher > resolution and a sigmask which is been set temporarily. This > version @@ -115,6 +128,20 @@ extern int pselect (int __nfds, fd_set > *__restrict __readfds, fd_set *__restrict __exceptfds, > const struct timespec *__restrict __timeout, > const __sigset_t *__restrict __sigmask); > + > +# 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 > #endif > > > diff --git a/posix/sched.h b/posix/sched.h > index 60c9c3c710..0d9cbc5bb2 100644 > --- a/posix/sched.h > +++ b/posix/sched.h > @@ -76,6 +76,15 @@ extern int sched_get_priority_min (int > __algorithm) __THROW; /* Get the SCHED_RR interval for the named > process. */ extern int sched_rr_get_interval (__pid_t __pid, struct > timespec *__t) __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (sched_rr_get_interval, > + (__pid_t __pid, struct timespec *__t), > + __sched_rr_get_interval64); > +# else > +# define sched_rr_get_interval __sched_rr_get_interval64 > +# endif > +#endif > > #ifdef __USE_GNU > /* Access macros for `cpu_set'. */ > diff --git a/posix/sys/wait.h b/posix/sys/wait.h > index a42e16c1b0..68ec036b29 100644 > --- a/posix/sys/wait.h > +++ b/posix/sys/wait.h > @@ -146,12 +146,32 @@ struct rusage; > otherwise don't. */ > extern __pid_t wait3 (int *__stat_loc, int __options, > struct rusage * __usage) __THROWNL; > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int > __options, > + struct rusage * __usage) > + __wait3_time64); > +# else > +# define wait3 __wait3_time64 > +# endif > +# endif > #endif > > #ifdef __USE_MISC > /* PID is like waitpid. Other args are like wait3. */ > extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options, > struct rusage *__usage) __THROWNL; > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int > *__stat_loc, > + int __options, struct > rusage *__usage), > + __wait4_time64); > +# else > +# define wait4 __wait4_time64 > +# endif > +# endif > #endif /* Use misc. */ > > > diff --git a/resolv/netdb.h b/resolv/netdb.h > index 575e416dac..bd0832988f 100644 > --- a/resolv/netdb.h > +++ b/resolv/netdb.h > @@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct > gaicb *__list[__restrict_arr], extern int gai_suspend (const struct > gaicb *const __list[], int __ent, const struct timespec *__timeout); > > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (gai_suspend, (const struct gaicb *const > __list[], > + int __ent, > + const struct timespec > *__timeout), > + __gai_suspend_time64); > +# else > +# define gai_suspend __gai_suspend_time64 > +# endif > +# endif > + > /* Get the error status of the request REQ. */ > extern int gai_error (struct gaicb *__req) __THROW; > > diff --git a/resource/sys/resource.h b/resource/sys/resource.h > index 4edafb50d5..98f05cf1c4 100644 > --- a/resource/sys/resource.h > +++ b/resource/sys/resource.h > @@ -86,6 +86,16 @@ extern int setrlimit64 (__rlimit_resource_t > __resource, and put it in *USAGE. Returns 0 for success, -1 for > failure. */ extern int getrusage (__rusage_who_t __who, struct > rusage *__usage) __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who, > + struct rusage *__usage), > + __getrusage64); > +# else > +# define getrusage __getrusage64 > +# endif > +#endif > + > /* Return the highest priority of any process specified by WHICH and > WHO (see above); if WHO is zero, the current process, process group, > or user (as specified by WHO) is used. A lower priority number means > higher diff --git a/rt/aio.h b/rt/aio.h > index 148d31a0af..2c35f1b04c 100644 > --- a/rt/aio.h > +++ b/rt/aio.h > @@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, > (struct aiocb *__aiocbp), extern int __REDIRECT_NTH (aio_cancel, > (int __fildes, struct aiocb *__aiocbp), > aio_cancel64); > - > +# ifdef __USE_TIME_BITS64 > +extern int __REDIRECT_NTH (aio_suspend, > + (const struct aiocb *const __list[], int > __nent, > + const struct timespec *__restrict > __timeout), > + __aio_suspend_time64) __nonnull ((1)); > +# else > extern int __REDIRECT_NTH (aio_suspend, > (const struct aiocb *const __list[], int > __nent, const struct timespec *__restrict __timeout), > aio_suspend64) __nonnull ((1)); > - > +# endif > extern int __REDIRECT_NTH (aio_fsync, > (int __operation, struct aiocb *__aiocbp), > aio_fsync64) __nonnull ((2)); > @@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync, > # define aio_error aio_error64 > # define aio_return aio_return64 > # define aio_cancel aio_cancel64 > -# define aio_suspend aio_suspend64 > +# ifdef __USE_TIME_BITS64 > +# define aio_suspend __aio_suspend_time64 > +# else > +# define aio_suspend aio_suspend64 > +# endif > # define aio_fsync aio_fsync64 > # endif > #endif > @@ -234,6 +243,16 @@ extern int aio_cancel64 (int __fildes, struct > aiocb64 *__aiocbp) __THROW; extern int aio_suspend64 (const struct > aiocb64 *const __list[], int __nent, const struct timespec > *__restrict __timeout) __THROW __nonnull ((1)); > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (aio_suspend64, > + (const struct aiocb *const __list[], int > __nent, > + const struct timespec *__restrict > __timeout), > + __aio_suspend_time64) __nonnull ((1)); > +# else > +# define aio_suspend64 __aio_suspend_time64 > +# endif > +# endif > > extern int aio_fsync64 (int __operation, struct aiocb64 *__aiocbp) > __THROW __nonnull ((2)); > diff --git a/rt/mqueue.h b/rt/mqueue.h > index a2a2aa1771..e6b8641c62 100644 > --- a/rt/mqueue.h > +++ b/rt/mqueue.h > @@ -79,12 +79,37 @@ extern ssize_t mq_timedreceive (mqd_t __mqdes, > char *__restrict __msg_ptr, const struct timespec *__restrict > __abs_timeout) __nonnull ((2, 5)); > > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __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_timedreceive_time64); > +# else > +# define mq_timedreceive __mq_timedreceive_time64 > +# endif > +# endif > + > /* Add message pointed by MSG_PTR to message queue MQDES, stop > blocking on full message queue if ABS_TIMEOUT expires. */ > extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr, > size_t __msg_len, unsigned int __msg_prio, > const struct timespec *__abs_timeout) > __nonnull ((2, 5)); > + > +# 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_timedsend_time64); > +# else > +# define mq_timedsend __mq_timedsend_time64 > +# endif > +# endif > #endif > > /* Define some inlines helping to catch common problems. */ > diff --git a/signal/signal.h b/signal/signal.h > index effe3d698f..564820e366 100644 > --- a/signal/signal.h > +++ b/signal/signal.h > @@ -274,6 +274,18 @@ extern int sigtimedwait (const sigset_t > *__restrict __set, const struct timespec *__restrict __timeout) > __nonnull ((1)); > > +# 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); > +# else > +# define sigtimedwait __sigtimedwait64 > +# endif > +# endif > + > /* Send signal SIG to the process PID. Associate data in VAL with > the signal. */ > extern int sigqueue (__pid_t __pid, int __sig, const union sigval > __val) diff --git a/socket/sys/socket.h b/socket/sys/socket.h > index 7780c00ecb..2273c52cdf 100644 > --- a/socket/sys/socket.h > +++ b/socket/sys/socket.h > @@ -199,6 +199,17 @@ extern ssize_t recvmsg (int __fd, struct msghdr > *__message, int __flags); extern int recvmmsg (int __fd, struct > mmsghdr *__vmessages, unsigned int __vlen, int __flags, > struct timespec *__tmo); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr > *__vmessages, > + unsigned int __vlen, int __flags, > + struct timespec *__tmo), > + __recvmmsg64); > +# else > +# define recvmmsg __recvmmsg64 > +# endif > +# endif > #endif > > > diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h > index 3a34d82342..982ed32baa 100644 > --- a/sysdeps/nptl/pthread.h > +++ b/sysdeps/nptl/pthread.h > @@ -230,6 +230,17 @@ extern int pthread_tryjoin_np (pthread_t __th, > void **__thread_return) __THROW; extern int pthread_timedjoin_np > (pthread_t __th, void **__thread_return, const struct timespec > *__abstime); > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (pthread_timedjoin_np, > + (pthread_t __th, void **__thread_return, > + const struct timespec *__abstime), > + __pthread_timedjoin_np64); > +# else > +# define pthread_timedjoin_np __pthread_timedjoin_np64 > +# endif > +# endif > + > /* Make calling thread wait for termination of the thread TH, but > only until TIMEOUT measured against the clock specified by CLOCKID. > The exit status of the thread is stored in *THREAD_RETURN, if > @@ -240,6 +251,18 @@ extern int pthread_timedjoin_np (pthread_t __th, > void **__thread_return, extern int pthread_clockjoin_np (pthread_t > __th, void **__thread_return, clockid_t __clockid, > const struct timespec *__abstime); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (pthread_clockjoin_np, > + (pthread_t __th, void **__thread_return, > + clockid_t __clockid, > + const struct timespec *__abstime), > + __pthread_clockjoin_np64); > +# else > +# define pthread_clockjoin_np __pthread_clockjoin_np64 > +# endif > +# endif > #endif > > /* Indicate that the thread TH is never to be joined with > PTHREAD_JOIN. @@ -776,6 +799,17 @@ extern int pthread_mutex_lock > (pthread_mutex_t *__mutex) extern int pthread_mutex_timedlock > (pthread_mutex_t *__restrict __mutex, const struct timespec > *__restrict __abstime) __THROWNL __nonnull ((1, 2)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_mutex_timedlock, > + (pthread_mutex_t *__restrict __mutex, > + const struct timespec *__restrict > __abstime), > + __pthread_mutex_timedlock64); > +# else > +# define pthread_mutex_timedlock __pthread_mutex_timedlock64 > +# endif > +# endif > #endif > > #ifdef __USE_GNU > @@ -783,6 +817,18 @@ extern int pthread_mutex_clocklock > (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, > const struct timespec *__restrict > __abstime) __THROWNL __nonnull > ((1, 3)); + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_mutex_clocklock, > + (pthread_mutex_t *__restrict __mutex, > + clockid_t __clockid, > + const struct timespec *__restrict > __abstime), > + __pthread_mutex_clocklock64); > +# else > +# define pthread_mutex_clocklock __pthread_mutex_clocklock64 > +# endif > +# endif > #endif > > /* Unlock a mutex. */ > @@ -922,6 +968,17 @@ extern int pthread_rwlock_tryrdlock > (pthread_rwlock_t *__rwlock) extern int pthread_rwlock_timedrdlock > (pthread_rwlock_t *__restrict __rwlock, const struct timespec > *__restrict __abstime) __THROWNL __nonnull ((1, 2)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock, > + (pthread_rwlock_t *__restrict __rwlock, > + const struct timespec *__restrict > __abstime), > + __pthread_rwlock_timedrdlock64); > +# else > +# define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64 > +# endif > +# endif > # endif > > # ifdef __USE_GNU > @@ -929,6 +986,18 @@ extern int pthread_rwlock_clockrdlock > (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, > const struct timespec > *__restrict __abstime) __THROWNL __nonnull ((1, 3)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock, > + (pthread_rwlock_t *__restrict __rwlock, > + clockid_t __clockid, > + const struct timespec *__restrict > __abstime), > + __pthread_rwlock_clockrdlock64); > +# else > +# define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64 > +# endif > +# endif > # endif > > /* Acquire write lock for RWLOCK. */ > @@ -944,6 +1013,17 @@ extern int pthread_rwlock_trywrlock > (pthread_rwlock_t *__rwlock) extern int pthread_rwlock_timedwrlock > (pthread_rwlock_t *__restrict __rwlock, const struct timespec > *__restrict __abstime) __THROWNL __nonnull ((1, 2)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock, > + (pthread_rwlock_t *__restrict __rwlock, > + const struct timespec *__restrict > __abstime), > + __pthread_rwlock_timedwrlock64); > +# else > +# define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64 > +# endif > +# endif > # endif > > # ifdef __USE_GNU > @@ -951,6 +1031,18 @@ extern int pthread_rwlock_clockwrlock > (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, > const struct timespec > *__restrict __abstime) __THROWNL __nonnull ((1, 3)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTHNL) > +extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock, > + (pthread_rwlock_t *__restrict __rwlock, > + clockid_t __clockid, > + const struct timespec *__restrict > __abstime), > + __pthread_rwlock_clockwrlock64); > +# else > +# define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64 > +# endif > +# endif > # endif > > /* Unlock RWLOCK. */ > @@ -1032,6 +1124,18 @@ extern int pthread_cond_timedwait > (pthread_cond_t *__restrict __cond, const struct timespec *__restrict > __abstime) __nonnull ((1, 2, 3)); > > +# 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); > +# else > +# define pthread_cond_timedwait __pthread_cond_timedwait64 > +# endif > +# endif > + > # ifdef __USE_GNU > /* Wait for condition variable COND to be signaled or broadcast until > ABSTIME measured by the specified clock. MUTEX is assumed to be > @@ -1045,6 +1149,19 @@ extern int pthread_cond_clockwait > (pthread_cond_t *__restrict __cond, __clockid_t __clock_id, > const struct timespec *__restrict > __abstime) __nonnull ((1, 2, 4)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (pthread_cond_clockwait, > + (pthread_cond_t *__restrict __cond, > + pthread_mutex_t *__restrict __mutex, > + __clockid_t __clock_id, > + const struct timespec *__restrict __abstime), > + __pthread_cond_clockwait64); > +# else > +# define pthread_cond_clockwait __pthread_cond_clockwait64 > +# endif > +# endif > # endif > > /* Functions for handling condition variable attributes. */ > diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h > index 436d21cb08..6a6055fc3a 100644 > --- a/sysdeps/pthread/semaphore.h > +++ b/sysdeps/pthread/semaphore.h > @@ -62,6 +62,17 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1)); > extern int sem_timedwait (sem_t *__restrict __sem, > const struct timespec *__restrict > __abstime) __nonnull ((1, 2)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (sem_timedwait, > + (sem_t *__restrict __sem, > + const struct timespec *__restrict __abstime), > + __sem_timedwait64); > +# else > +# define sem_timedwait __sem_timedwait64 > +# endif > +# endif > #endif > > #ifdef __USE_GNU > @@ -69,6 +80,18 @@ extern int sem_clockwait (sem_t *__restrict __sem, > clockid_t clock, > const struct timespec *__restrict > __abstime) __nonnull ((1, 3)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (sem_clockwait, > + (sem_t *__restrict __sem, > + clockid_t clock, > + const struct timespec *__restrict __abstime), > + __sem_clockwait64); > +# else > +# define sem_clockwait __sem_clockwait64 > +# endif > +# endif > #endif > > /* Test whether SEM is posted. */ > diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h > index 0ac489b4a1..acdc7b329a 100644 > --- a/sysdeps/pthread/threads.h > +++ b/sysdeps/pthread/threads.h > @@ -91,6 +91,16 @@ extern thrd_t thrd_current (void); > extern int thrd_sleep (const struct timespec *__time_point, > struct timespec *__remaining); > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (thrd_sleep, (const struct timespec > *__time_point, > + struct timespec *__remaining), > + __thrd_sleep64); > +# else > +# define thrd_sleep __thrd_sleep64 > +# endif > +#endif > + > /* Terminate current thread execution, cleaning up any thread local > storage and freeing resources. Returns the value specified in > __RES. */ extern void thrd_exit (int __res) __attribute__ > ((__noreturn__)); @@ -134,6 +144,17 @@ extern int mtx_lock (mtx_t > *__mutex); extern int mtx_timedlock (mtx_t *__restrict __mutex, > const struct timespec *__restrict > __time_point); > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex, > + const struct timespec > *__restrict > + __time_point), > + __mtx_timedlock64); > +# else > +# define mtx_timedlock __mtx_timedlock64 > +# endif > +#endif > + > /* Try to lock the mutex pointed by __MUTEX without blocking. If > the mutex is free the current threads takes control of it, otherwise > it returns immediately. */ > @@ -175,6 +196,18 @@ extern int cnd_timedwait (cnd_t *__restrict > __cond, mtx_t *__restrict __mutex, > const struct timespec *__restrict > __time_point); > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT) > +extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond, > + mtx_t *__restrict __mutex, > + const struct timespec > *__restrict > + __time_point), > + __cnd_timedwait64); > +# else > +# define cnd_timedwait __cnd_timedwait64 > +# endif > +#endif > + > /* Destroy condition variable pointed by __cond and free all of its > resources. */ > extern void cnd_destroy (cnd_t *__COND); > diff --git a/sysdeps/unix/sysv/linux/bits/time.h > b/sysdeps/unix/sysv/linux/bits/time.h index e0962744e1..7168ef1948 > 100644 --- a/sysdeps/unix/sysv/linux/bits/time.h > +++ b/sysdeps/unix/sysv/linux/bits/time.h > @@ -77,6 +77,16 @@ __BEGIN_DECLS > /* Tune a POSIX clock. */ > extern int clock_adjtime (__clockid_t __clock_id, struct timex > *__utx) __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id, > + struct timex *__utx), > + __clock_adjtime64); > +# else > +# define clock_adjtime __clock_adjtime64 > +# endif > +#endif > + > __END_DECLS > #endif /* use GNU */ > > diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h > b/sysdeps/unix/sysv/linux/sys/timerfd.h index 0ae60b65bd..cd252476a7 > 100644 --- a/sysdeps/unix/sysv/linux/sys/timerfd.h > +++ b/sysdeps/unix/sysv/linux/sys/timerfd.h > @@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags, > const struct itimerspec *__utmr, > struct itimerspec *__otmr) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (timerfd_settime, > + (int __ufd, int __flags, > + const struct itimerspec *__restrict > __value, > + struct itimerspec *__restrict __ovalue), > + __timerfd_settime64); > +# else > +# define timerfd_settime __timerfd_settime64 > +# endif > +#endif > + > /* Return the next expiration time of UFD. */ > extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) > __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd, > + struct itimerspec > *__otmr), > + __timerfd_gettime64); > +# else > +# define timerfd_gettime __timerfd_gettime64 > +# endif > +#endif > + > __END_DECLS > > #endif /* sys/timerfd.h */ > diff --git a/sysdeps/unix/sysv/linux/sys/timex.h > b/sysdeps/unix/sysv/linux/sys/timex.h index 6979b86b72..b5271152bb > 100644 --- a/sysdeps/unix/sysv/linux/sys/timex.h > +++ b/sysdeps/unix/sysv/linux/sys/timex.h > @@ -57,15 +57,46 @@ __BEGIN_DECLS > extern int __adjtimex (struct timex *__ntx) __THROW; > extern int adjtimex (struct timex *__ntx) __THROW; > > -#ifdef __REDIRECT_NTH > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx), > + ___adjtimex64); > +# else > +# define adjtimex ___adjtimex64 > +# endif > +#endif > + > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), > - ntp_gettimex); > + __ntp_gettime64); > +extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv), > + __ntp_gettimex64); > +# else > +# define ntp_gettime __ntp_gettime64 > +# define ntp_gettimex __ntp_gettimex64 > +# endif > #else > +# ifdef __REDIRECT_NTH > +extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), > + ntp_gettimex); > +# else > extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW; > -# define ntp_gettime ntp_gettimex > +# define ntp_gettime ntp_gettimex > +# endif > #endif > + > extern int ntp_adjtime (struct timex *__tntx) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx), > + ___adjtimex64); > +# else > +# define ntp_adjtime ___adjtimex64 > +# endif > +#endif > + > __END_DECLS > > #endif /* sys/timex.h */ > diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h > index c70cfa582c..f39c153b86 100644 > --- a/sysvipc/sys/msg.h > +++ b/sysvipc/sys/msg.h > @@ -60,6 +60,16 @@ __BEGIN_DECLS > /* Message queue control operation. */ > extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) > __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (msgctl, > + (int __msqid, int __cmd, struct msqid_ds > *__buf), > + __msgctl64); > +# else > +# define msgctl __msgctl64 > +# endif > +#endif > + > /* Get messages queue. */ > extern int msgget (key_t __key, int __msgflg) __THROW; > > diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h > index 4ede2dd6ef..b26c17914c 100644 > --- a/sysvipc/sys/sem.h > +++ b/sysvipc/sys/sem.h > @@ -50,6 +50,16 @@ __BEGIN_DECLS > /* Semaphore control operation. */ > extern int semctl (int __semid, int __semnum, int __cmd, ...) > __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (semctl, > + (int __semid, int __semnum, int __cmd, > ...), > + __semctl64); > +# else > +# define semctl __semctl64 > +# endif > +#endif > + > /* Get semaphore. */ > extern int semget (key_t __key, int __nsems, int __semflg) __THROW; > > @@ -60,6 +70,17 @@ extern int semop (int __semid, struct sembuf > *__sops, size_t __nsops) __THROW; /* Operate on semaphore with > timeout. */ extern int semtimedop (int __semid, struct sembuf > *__sops, size_t __nsops, const struct timespec *__timeout) __THROW; > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf > *__sops, > + size_t __nsops, > + const struct timespec > *__timeout), > + __semtimedop64); > +# else > +# define semtimedop __semtimedop64 > +# endif > +# endif > #endif > > __END_DECLS > diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h > index 6c58742c4f..8d74911e55 100644 > --- a/sysvipc/sys/shm.h > +++ b/sysvipc/sys/shm.h > @@ -48,6 +48,16 @@ __BEGIN_DECLS > /* Shared memory control operation. */ > extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) > __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (shmctl, > + (int __shmid, int __cmd, struct shmid_ds > *__buf), > + __shmctl64); > +# else > +# define shmctl __shmctl64 > +# endif > +#endif > + > /* Get shared memory segment. */ > extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW; > > diff --git a/time/sys/time.h b/time/sys/time.h > index 21fa9ed451..d3bf1e6588 100644 > --- a/time/sys/time.h > +++ b/time/sys/time.h > @@ -66,6 +66,16 @@ struct timezone > extern int gettimeofday (struct timeval *__restrict __tv, > void *__restrict __tz) __THROW __nonnull > ((1)); > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict > __tv, > + void *__restrict __tz), > + __gettimeofday64); > +# else > +# define gettimeofday __gettimeofday64 > +# endif > +#endif > + > #ifdef __USE_MISC > /* Set the current time of day and timezone information. > This call is restricted to the super-user. > @@ -76,12 +86,33 @@ extern int settimeofday (const struct timeval > *__tv, const struct timezone *__tz) > __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv, > + const struct timezone > *__tz), > + __settimeofday64); > +# else > +# define settimeofday __settimeofday64 > +# endif > +#endif > + > /* Adjust the current time of day by the amount in DELTA. > 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. */ > extern int adjtime (const struct timeval *__delta, > struct timeval *__olddelta) __THROW; > + > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta, > + struct timeval *__olddelta), > + __adjtime64); > +# else > +# define adjtime __adjtime64 > +# endif > +#endif > + > #endif > > > @@ -123,6 +154,16 @@ typedef int __itimer_which_t; > extern int getitimer (__itimer_which_t __which, > struct itimerval *__value) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which, > + struct itimerval *__value), > + __getitimer64); > +# else > +# define getitimer __getitimer64 > +# endif > +#endif > + > /* 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. */ > @@ -130,19 +171,59 @@ extern int setitimer (__itimer_which_t __which, > const struct itimerval *__restrict __new, > struct itimerval *__restrict __old) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which, > + const struct itimerval > *__restrict __new, > + struct itimerval *__restrict > __old), > + __setitimer64); > +# else > +# define setitimer __setitimer64 > +# endif > +#endif > + > /* 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. */ > extern int utimes (const char *__file, const struct timeval __tvp[2]) > __THROW __nonnull ((1)); > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (utimes, (const char *__file, > + const struct timeval __tvp[2]), > + __utimes64); > +# else > +# define utimes __utimes64 > +# endif > +#endif > + > #ifdef __USE_MISC > /* Same as `utimes', but does not follow symbolic links. */ > extern int lutimes (const char *__file, const struct timeval > __tvp[2]) __THROW __nonnull ((1)); > > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (lutimes, (const char *__file, > + const struct timeval __tvp[2]), > + __lutimes64); > +# else > +# define lutimes __lutimes64 > +# endif > +# endif > + > /* Same as `utimes', but takes an open file descriptor instead of a > name. */ extern int futimes (int __fd, const struct timeval > __tvp[2]) __THROW; + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval > __tvp[2]), > + __futimes64); > +# else > +# define futimes __futimes64 > +# endif > +# endif > #endif > > #ifdef __USE_GNU > @@ -151,6 +232,16 @@ extern int futimes (int __fd, const struct > timeval __tvp[2]) __THROW; the current time instead. Returns 0 on > success, -1 on errors. */ extern int futimesat (int __fd, const char > *__file, const struct timeval __tvp[2]) __THROW; > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file, > + const struct timeval > __tvp[2]), > + __futimesat64); > +# else > +# define futimesat __futimesat64 > +# endif > +# endif > #endif > > > diff --git a/time/time.h b/time/time.h > index 015bc1c7f3..9a74f01b2f 100644 > --- a/time/time.h > +++ b/time/time.h > @@ -74,13 +74,37 @@ extern clock_t clock (void) __THROW; > /* Return the current time and put it in *TIMER if TIMER is not > NULL. */ extern time_t time (time_t *__timer) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64); > +# else > +# define time __time64 > +# endif > +#endif > + > /* Return the difference between TIME1 and TIME0. */ > extern double difftime (time_t __time1, time_t __time0) > __THROW __attribute__ ((__const__)); > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t > __time0), > + __difftime64); > +# else > +# define difftime __difftime64 > +# endif > +#endif > + > /* Return the `time_t' representation of TP and normalize TP. */ > extern time_t mktime (struct tm *__tp) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64); > +# else > +# define mktime __mktime64 > +# endif > +#endif > > /* Format TP into S according to FORMAT. > Write no more than MAXSIZE characters and return the number > @@ -118,6 +142,14 @@ extern char *strptime_l (const char *__restrict > __s, in Universal Coordinated Time (aka Greenwich Mean Time). */ > extern struct tm *gmtime (const time_t *__timer) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), > __gmtime64); +# else > +# define gmtime __gmtime64 > +# endif > +#endif > + > /* Return the `struct tm' representation > of *TIMER in the local timezone. */ > extern struct tm *localtime (const time_t *__timer) __THROW; > @@ -128,6 +160,16 @@ extern struct tm *localtime (const time_t > *__timer) __THROW; extern struct tm *gmtime_r (const time_t > *__restrict __timer, struct tm *__restrict __tp) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict > __timer, > + struct tm *__restrict > __tp), > + __gmtime64_r); > +# else > +# define gmtime_r __gmtime64_r > +# endif > +#endif > + > /* Return the `struct tm' representation of *TIMER in local time, > using *TP to store the result. */ > extern struct tm *localtime_r (const time_t *__restrict __timer, > @@ -141,6 +183,14 @@ extern char *asctime (const struct tm *__tp) > __THROW; /* Equivalent to `asctime (localtime (timer))'. */ > extern char *ctime (const time_t *__timer) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), > __ctime64); +# else > +# define ctime __ctime64 > +# endif > +#endif > + > #if defined __USE_POSIX || __GLIBC_USE (ISOC2X) > /* Reentrant versions of the above functions. */ > > @@ -152,6 +202,16 @@ extern char *asctime_r (const struct tm > *__restrict __tp, /* Equivalent to `asctime_r (localtime_r (timer, > *TMP*), buf)'. */ extern char *ctime_r (const time_t *__restrict > __timer, char *__restrict __buf) __THROW; > + > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict > __timer, > + char *__restrict __buf), > __ctime64_r); +# else > +# define ctime_r __ctime64_r > +# endif > +#endif > + > #endif /* POSIX || C2X */ > > > @@ -189,6 +249,14 @@ extern long int timezone; > /* Like `mktime', but for TP represents Universal Time, not local > time. */ extern time_t timegm (struct tm *__tp) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64); > +# else > +# define timegm __timegm64 > +# endif > +#endif > + > /* Another name for `mktime'. */ > extern time_t timelocal (struct tm *__tp) __THROW; > > @@ -205,17 +273,54 @@ extern int dysize (int __year) __THROW > __attribute__ ((__const__)); extern int nanosleep (const struct > timespec *__requested_time, struct timespec *__remaining); > > +# 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 > > /* Get resolution of clock CLOCK_ID. */ > extern int clock_getres (clockid_t __clock_id, struct timespec > *__res) __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id, > + struct timespec *__res), > + __clock_getres64); > +# else > +# define clock_getres __clock_getres64 > +# endif > +#endif > + > /* Get current value of clock CLOCK_ID and store it in TP. */ > extern int clock_gettime (clockid_t __clock_id, struct timespec > *__tp) __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, > struct > + timespec *__tp), > __clock_gettime64); +# else > +# define clock_gettime __clock_gettime64 > +# endif > +#endif > + > /* Set clock CLOCK_ID to value TP. */ > extern int clock_settime (clockid_t __clock_id, const struct > timespec *__tp) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, > const struct > + timespec *__tp), > __clock_settime64); +# else > +# define clock_settime __clock_settime64 > +# endif > +#endif > + > # ifdef __USE_XOPEN2K > /* High-resolution sleep with the specified clock. > > @@ -225,6 +330,17 @@ extern int clock_nanosleep (clockid_t > __clock_id, int __flags, const struct timespec *__req, > struct timespec *__rem); > > +#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_nanosleep_time64); > +# else > +# define clock_nanosleep __clock_nanosleep_time64 > +# endif > +#endif > + > /* Return clock ID for CPU-time clock. */ > extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) > __THROW; # endif > @@ -243,10 +359,31 @@ extern int timer_settime (timer_t __timerid, > int __flags, const struct itimerspec *__restrict __value, > struct itimerspec *__restrict __ovalue) > __THROW; > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int > __flags, > + const struct itimerspec *__restrict __value, > + struct itimerspec *__restrict __ovalue), > + __timer_settime64); > +# else > +# define timer_settime __timer_settime64 > +# endif > +#endif > + > /* Get current value of timer TIMERID and store it in VALUE. */ > extern int timer_gettime (timer_t __timerid, struct itimerspec > *__value) __THROW; > > +#ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid, > + struct itimerspec > *__value), > + __timer_gettime64) __nonnull ((1)); > +# else > +# define timer_gettime __timer_gettime64 > +# endif > +#endif > + > /* Get expiration overrun for timer TIMERID. */ > extern int timer_getoverrun (timer_t __timerid) __THROW; > #endif > @@ -256,6 +393,15 @@ extern int timer_getoverrun (timer_t __timerid) > __THROW; /* Set TS to calendar time based in time base BASE. */ > extern int timespec_get (struct timespec *__ts, int __base) > __THROW __nonnull ((1)); > + > +# ifdef __USE_TIME_BITS64 > +# if defined(__REDIRECT_NTH) > +extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int > __base), > + __timespec_get64); > +# else > +# define timespec_get __timespec_get64 > +# endif > +# endif > #endif > > Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de