From 7e2b221be1bae211b580ea1204dc7c54b2684abd Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 19 Oct 2004 20:10:18 +0000 Subject: Peter S. Mazinger writes: Hello! Would the attached patch be acceptable (maybe instead of __libc_gettimeofday using __gettimeofday) We have some issues, see http://bugs.gentoo.org/show_bug.cgi?id=65892 --- include/sys/time.h | 5 +++++ libc/inet/rpc/auth_unix.c | 4 ++-- libc/inet/rpc/create_xid.c | 2 +- libc/misc/time/clock_gettime.c | 2 +- libc/misc/time/ftime.c | 2 +- libc/misc/time/time.c | 2 +- libc/misc/utmp/wtent.c | 2 +- libc/sysdeps/linux/common/gettimeofday.c | 7 ++++++- libc/sysdeps/linux/common/time.c | 2 +- libc/sysdeps/linux/common/utime.c | 2 +- libpthread/linuxthreads/pthread.c | 4 ++-- libutil/logout.c | 2 +- libutil/logwtmp.c | 2 +- 13 files changed, 24 insertions(+), 14 deletions(-) diff --git a/include/sys/time.h b/include/sys/time.h index f051d58c4..d51de1b8f 100644 --- a/include/sys/time.h +++ b/include/sys/time.h @@ -72,6 +72,11 @@ typedef void *__restrict __timezone_ptr_t; extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz) __THROW; +#ifdef _LIBC +extern int __libc_gettimeofday (struct timeval *__restrict __tv, + __timezone_ptr_t __tz) __THROW; +#endif + #ifdef __USE_BSD /* Set the current time of day and timezone information. This call is restricted to the super-user. */ diff --git a/libc/inet/rpc/auth_unix.c b/libc/inet/rpc/auth_unix.c index 3e14ba2a5..6fe89048b 100644 --- a/libc/inet/rpc/auth_unix.c +++ b/libc/inet/rpc/auth_unix.c @@ -130,7 +130,7 @@ no_memory: /* * fill in param struct from the given params */ - (void) gettimeofday (&now, (struct timezone *) 0); + (void) __libc_gettimeofday (&now, (struct timezone *) 0); aup.aup_time = now.tv_sec; aup.aup_machname = machname; aup.aup_uid = uid; @@ -265,7 +265,7 @@ authunix_refresh (AUTH *auth) goto done; /* update the time and serialize in place */ - (void) gettimeofday (&now, (struct timezone *) 0); + (void) __libc_gettimeofday (&now, (struct timezone *) 0); aup.aup_time = now.tv_sec; xdrs.x_op = XDR_ENCODE; XDR_SETPOS (&xdrs, 0); diff --git a/libc/inet/rpc/create_xid.c b/libc/inet/rpc/create_xid.c index cbb961e4d..8d8a34070 100644 --- a/libc/inet/rpc/create_xid.c +++ b/libc/inet/rpc/create_xid.c @@ -51,7 +51,7 @@ _create_xid (void) { struct timeval now; - gettimeofday (&now, (struct timezone *) 0); + __libc_gettimeofday (&now, (struct timezone *) 0); srand48_r (now.tv_sec ^ now.tv_usec, &__rpc_lrand48_data); is_initialized = 1; } diff --git a/libc/misc/time/clock_gettime.c b/libc/misc/time/clock_gettime.c index 550cf4dc4..b71a8ac2d 100644 --- a/libc/misc/time/clock_gettime.c +++ b/libc/misc/time/clock_gettime.c @@ -26,7 +26,7 @@ int clock_gettime (clockid_t clock, struct timespec* ts) int retval = -1; switch (clock) { case CLOCK_REALTIME: - retval = gettimeofday (&tv, NULL); + retval = __libc_gettimeofday (&tv, NULL); if (retval == 0) { TIMEVAL_TO_TIMESPEC (&tv, ts); } diff --git a/libc/misc/time/ftime.c b/libc/misc/time/ftime.c index 24789c9eb..cd7d7f9e2 100644 --- a/libc/misc/time/ftime.c +++ b/libc/misc/time/ftime.c @@ -25,7 +25,7 @@ struct timeb *timebuf; struct timeval tv; struct timezone tz; - if (gettimeofday (&tv, &tz) < 0) + if (__libc_gettimeofday (&tv, &tz) < 0) return -1; timebuf->time = tv.tv_sec; diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c index ac2fe5926..dbd72b064 100644 --- a/libc/misc/time/time.c +++ b/libc/misc/time/time.c @@ -1603,7 +1603,7 @@ time_t time(register time_t *tloc) struct timeval tv; register struct timeval *p = &tv; - gettimeofday(p, NULL); /* This should never fail... */ + __libc_gettimeofday(p, NULL); /* This should never fail... */ if (tloc) { *tloc = p->tv_sec; diff --git a/libc/misc/utmp/wtent.c b/libc/misc/utmp/wtent.c index ef5663feb..9556ff338 100644 --- a/libc/misc/utmp/wtent.c +++ b/libc/misc/utmp/wtent.c @@ -38,7 +38,7 @@ void logwtmp (const char *line, const char *name, const char *host) strncpy(lutmp.ut_line, line, sizeof(lutmp.ut_line)-1); strncpy(lutmp.ut_name, name, sizeof(lutmp.ut_name)-1); strncpy(lutmp.ut_host, host, sizeof(lutmp.ut_host)-1); - gettimeofday(&(lutmp.ut_tv), NULL); + __libc_gettimeofday(&(lutmp.ut_tv), NULL); updwtmp(_PATH_WTMP, &(lutmp)); } diff --git a/libc/sysdeps/linux/common/gettimeofday.c b/libc/sysdeps/linux/common/gettimeofday.c index 297039243..d904dfa71 100644 --- a/libc/sysdeps/linux/common/gettimeofday.c +++ b/libc/sysdeps/linux/common/gettimeofday.c @@ -9,4 +9,9 @@ #include "syscalls.h" #include -_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz); + +#ifdef __NR_gettimeofday +#define __NR___libc_gettimeofday __NR_gettimeofday +#endif +_syscall2(int, __libc_gettimeofday, struct timeval *, tv, struct timezone *, tz); +weak_alias(__libc_gettimeofday, gettimeofday); diff --git a/libc/sysdeps/linux/common/time.c b/libc/sysdeps/linux/common/time.c index ea90dc2e7..bd68cd6e8 100644 --- a/libc/sysdeps/linux/common/time.c +++ b/libc/sysdeps/linux/common/time.c @@ -18,7 +18,7 @@ time_t time(time_t * t) time_t result; struct timeval tv; - if (gettimeofday(&tv, (struct timezone *) NULL)) { + if (__libc_gettimeofday(&tv, (struct timezone *) NULL)) { result = (time_t) - 1; } else { result = (time_t) tv.tv_sec; diff --git a/libc/sysdeps/linux/common/utime.c b/libc/sysdeps/linux/common/utime.c index 5cae0e0ea..a7c6e9e68 100644 --- a/libc/sysdeps/linux/common/utime.c +++ b/libc/sysdeps/linux/common/utime.c @@ -24,7 +24,7 @@ int utime(const char *file, const struct utimbuf *times) timevals[0].tv_sec = (long int) times->actime; timevals[1].tv_sec = (long int) times->modtime; } else { - if (gettimeofday(&timevals[0], NULL) < 0) { + if (__libc_gettimeofday(&timevals[0], NULL) < 0) { return -1; } timevals[1] = timevals[0]; diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c index c4225bce8..0ccd8bcf4 100644 --- a/libpthread/linuxthreads/pthread.c +++ b/libpthread/linuxthreads/pthread.c @@ -889,7 +889,7 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime) struct timespec reltime; /* Compute a time offset relative to now. */ - __gettimeofday (&now, NULL); + __libc_gettimeofday (&now, NULL); reltime.tv_nsec = abstime->tv_nsec - now.tv_usec * 1000; reltime.tv_sec = abstime->tv_sec - now.tv_sec; if (reltime.tv_nsec < 0) { @@ -974,7 +974,7 @@ int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstim struct timespec reltime; /* Compute a time offset relative to now. */ - gettimeofday (&now, NULL); + __libc_gettimeofday (&now, NULL); reltime.tv_nsec = abstime->tv_nsec - now.tv_usec * 1000; reltime.tv_sec = abstime->tv_sec - now.tv_sec; if (reltime.tv_nsec < 0) { diff --git a/libutil/logout.c b/libutil/logout.c index cf964e4dd..e0ebce98c 100644 --- a/libutil/logout.c +++ b/libutil/logout.c @@ -50,7 +50,7 @@ logout (const char *line) memset (ut->ut_host, 0, sizeof ut->ut_host); #endif #if _HAVE_UT_TV - 0 - gettimeofday (&ut->ut_tv, NULL); + __libc_gettimeofday (&ut->ut_tv, NULL); #else time (&ut->ut_time); #endif diff --git a/libutil/logwtmp.c b/libutil/logwtmp.c index 35d809d96..1286f140d 100644 --- a/libutil/logwtmp.c +++ b/libutil/logwtmp.c @@ -36,7 +36,7 @@ void logwtmp (const char *line, const char *name, const char *host) strncpy(lutmp.ut_line, line, sizeof(lutmp.ut_line)-1); strncpy(lutmp.ut_name, name, sizeof(lutmp.ut_name)-1); strncpy(lutmp.ut_host, host, sizeof(lutmp.ut_host)-1); - gettimeofday(&(lutmp.ut_tv), NULL); + __libc_gettimeofday(&(lutmp.ut_tv), NULL); updwtmp(_PATH_WTMP, &(lutmp)); } -- cgit v1.2.3