From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net [IPv6:2001:a60:0:28:0:1:25:1]) by sourceware.org (Postfix) with ESMTPS id E39413854816 for ; Wed, 3 Feb 2021 14:10:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E39413854816 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=lukma@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4DW3V117qsz1s8Nq; Wed, 3 Feb 2021 15:10:00 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4DW3V04c7Tz1t5kh; Wed, 3 Feb 2021 15:10:00 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id YwbKD1LgCo5z; Wed, 3 Feb 2021 15:09:55 +0100 (CET) X-Auth-Info: WyVqB0f7OTs99SFeW+vnF63x83N5X65NbRzOPa/ECz8= Received: from jawa (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Wed, 3 Feb 2021 15:09:55 +0100 (CET) Date: Wed, 3 Feb 2021 15:09:49 +0100 From: Lukasz Majewski To: Joseph Myers , Paul Eggert , Adhemerval Zanella Cc: Florian Weimer , GNU C Library , Siddhesh Poyarekar , Andreas Schwab , Stepan Golosunov , Alistair Francis Subject: Re: [PATCH] y2038: Redirect to 64 bit time functions when __USE_TIME_BITS64 is defined Message-ID: <20210203150949.1c39d70f@jawa> In-Reply-To: <20201229112701.195d6877@jawa> References: <20201209121802.21497-1-lukma@denx.de> <20201229112701.195d6877@jawa> Organization: denx.de X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/8sAguJxOdAo+VZFUcnmKv1J"; protocol="application/pgp-signature" X-Spam-Status: No, score=-15.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Feb 2021 14:10:10 -0000 --Sig_/8sAguJxOdAo+VZFUcnmKv1J Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Adhemerval, Joseph, Florian, > Dear Community, >=20 > I do know that the "freeze" time for glibc release is coming, but I > would be very happy to receive feedback on this patch. The glibc 2.33 is now out - do you mind if I pull this patch? It is a preparatory patch for Y2038 support and is inactive until support for _TIME_BITS flag is added. >=20 > It is the attempt to divide the Y2038 support to smaller chunks, so it > would be easier to review. >=20 > > 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=3D64 and _FILE_OFFSET_BITS=3D64 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=3D=3D32 and > > __TIMESIZE !=3D 64. > >=20 > > 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. =20 >=20 > 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. >=20 > > --- > > 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(-) > >=20 > > 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 > > =20 > > __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 > > =20 > > #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 > > =20 > > #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)); > > =20 > > +#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 > > =20 > > #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); > > =20 > > +#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 > > =20 > > =20 > > 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;=20 > > +#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 > > =20 > > #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 > > =20 > > #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. */ > > =20 > > =20 > > 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); > > =20 > > +# 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; > > =20 > > 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;=20 > > +#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 > > =20 > > 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)); > > =20 > > +# 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 > > =20 > > /* 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)); > > =20 > > +# 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 > > =20 > > =20 > > 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);=20 > > +# 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 > > =20 > > /* 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 > > =20 > > #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 > > =20 > > /* 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 > > =20 > > # 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 > > =20 > > /* 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 > > =20 > > # 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 > > =20 > > /* 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)); > > =20 > > +# 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 > > =20 > > /* 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 > > =20 > > #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 > > =20 > > /* 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); > > =20 > > +#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);=20 > > +#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);=20 > > +#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;=20 > > +#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 */ > > =20 > > 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; > > =20 > > +#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;=20 > > +#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 > > =20 > > #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; > > =20 > > -#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; > > =20 > > +#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 > > =20 > > #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;=20 > > +#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; > > =20 > > 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;=20 > > +#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; > > =20 > > @@ -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 > > =20 > > __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;=20 > > +#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;=20 > > 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));=20 > > +#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; > > =20 > > +#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 > > =20 > > =20 > > @@ -123,6 +154,16 @@ typedef int __itimer_which_t; > > extern int getitimer (__itimer_which_t __which, > > struct itimerval *__value) __THROW; > > =20 > > +#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; > > =20 > > +#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)); > > =20 > > +#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)); > > =20 > > +# 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 > > =20 > > #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 > > =20 > > =20 > > 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; > > =20 > > +#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__)); > > =20 > > +#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; > > =20 > > +#ifdef __USE_TIME_BITS64 > > +# if defined(__REDIRECT_NTH) > > +extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), > > __mktime64); +# else > > +# define mktime __mktime64 > > +# endif > > +#endif > > =20 > > /* 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; > > =20 > > +#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; > > =20 > > +#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; > > =20 > > +#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. */ > > =20 > > @@ -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 */ > > =20 > > =20 > > @@ -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; > > =20 > > +#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; > > =20 > > @@ -205,17 +273,54 @@ extern int dysize (int __year) __THROW > > __attribute__ ((__const__)); extern int nanosleep (const struct > > timespec *__requested_time, struct timespec *__remaining); > > =20 > > +# 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 > > =20 > > /* Get resolution of clock CLOCK_ID. */ > > extern int clock_getres (clockid_t __clock_id, struct timespec > > *__res) __THROW;=20 > > +#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;=20 > > +#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; > > =20 > > +#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. > > =20 > > @@ -225,6 +330,17 @@ extern int clock_nanosleep (clockid_t > > __clock_id, int __flags, const struct timespec *__req, > > struct timespec *__rem); > > =20 > > +#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;=20 > > +#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; > > =20 > > +#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 > > =20 > > =20 >=20 >=20 >=20 >=20 > Best regards, >=20 > Lukasz Majewski >=20 > -- >=20 > 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 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 --Sig_/8sAguJxOdAo+VZFUcnmKv1J Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAmAarq0ACgkQAR8vZIA0 zr3DpggApo08zORauiamyGSp19vTH6EHvcyRdcLxRNQohYPnfPug56KOKJydVyTn rJbPD9JQSX96y7XsrbR/fUN+g+3kd9fGyGQhQ+xtgXPi/qHWi4vYtQCgF+4Enfaz 1nz+cW1+WL+9KpKQBbNObAw5T4JUDG0T9NkiXgnAB9RexTls92iBwhdw4lsKPWxF S0jvv2nSTyi1VGLw5NORTWCrE41l3AR5D7HOzlYImCHElbfTc7onfdgxc69mDEo+ YHIWFJIREI5twiL/qpJlSav4v4ZmZxYfCKaOB30DJ8T2D0RWVbzMk3b0oghFHg9D ux4XR8VI9v1e/fYbCHjJaSRQQT9BSg== =vOy9 -----END PGP SIGNATURE----- --Sig_/8sAguJxOdAo+VZFUcnmKv1J--