The branch, master has been updated via 8c6ca6e s3: we have clock_gettime everywhere, remove ifdefs via 8589f46 s3: use clock_gettime() in timespec_current() via 3df1037 libreplace: add clock_gettime replacement function for systems that don't have it via 9f87bc4 libreplace/waf: look for clock_gettime via 4e104f1 libreplace: move detection of clock_gettime to libreplace via e866224 libreplace: move gettimeofday TZ arg check here from c2e2be5 packaging: cifsutils are no longer part of Samba
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 8c6ca6e25a4d33e4f9ae2ef13a3872cd533ba6f6 Author: Björn Jacke <b...@sernet.de> Date: Tue Aug 24 11:14:19 2010 +0200 s3: we have clock_gettime everywhere, remove ifdefs commit 8589f46b86b8acd0439e1325818cc69f9050240d Author: Björn Jacke <b...@sernet.de> Date: Mon Aug 30 16:51:56 2010 +0200 s3: use clock_gettime() in timespec_current() commit 3df1037a74181ef314e2115ade836546a572ee48 Author: Björn Jacke <b...@sernet.de> Date: Thu Aug 19 19:07:04 2010 +0200 libreplace: add clock_gettime replacement function for systems that don't have it commit 9f87bc4588c2ac669f6e808158dca7ec8517a461 Author: Björn Jacke <b...@sernet.de> Date: Fri Aug 27 00:13:07 2010 +0200 libreplace/waf: look for clock_gettime commit 4e104f185e1aa12c0923e82d3991a658eb2b9474 Author: Björn Jacke <b...@sernet.de> Date: Thu Aug 19 18:39:45 2010 +0200 libreplace: move detection of clock_gettime to libreplace commit e8662248c8bf7dfc830ce34f301f30f59e600cd8 Author: Björn Jacke <b...@sernet.de> Date: Mon Aug 30 14:35:49 2010 +0200 libreplace: move gettimeofday TZ arg check here ----------------------------------------------------------------------- Summary of changes: lib/replace/README | 1 + lib/replace/libreplace.m4 | 43 ++++++++++++++++++++++++++++++++++++++++++ lib/replace/replace.c | 21 ++++++++++++++++++++ lib/replace/replace.h | 4 +++ lib/replace/system/config.m4 | 10 +++++++++ lib/replace/system/time.h | 6 +++++ lib/replace/wscript | 1 + lib/util/time.m4 | 9 -------- source3/configure.in | 20 +----------------- source3/include/smbprofile.h | 13 ------------ source3/lib/time.c | 5 +--- source3/m4/aclocal.m4 | 31 ------------------------------ source3/profile/profile.c | 7 ------ source4/configure.ac | 1 - 14 files changed, 89 insertions(+), 83 deletions(-) delete mode 100644 lib/util/time.m4 Changeset truncated at 500 lines: diff --git a/lib/replace/README b/lib/replace/README index b2d2e4f..bf4e67f 100644 --- a/lib/replace/README +++ b/lib/replace/README @@ -33,6 +33,7 @@ opendir readdir telldir seekdir +clock_gettime closedir dlopen dlclose diff --git a/lib/replace/libreplace.m4 b/lib/replace/libreplace.m4 index 2303641..0d716e0 100644 --- a/lib/replace/libreplace.m4 +++ b/lib/replace/libreplace.m4 @@ -115,6 +115,12 @@ AC_CHECK_FUNCS(fdatasync,,[ [libreplace_cv_HAVE_FDATASYNC_IN_LIBRT=yes AC_DEFINE(HAVE_FDATASYNC, 1, Define to 1 if there is support for fdatasync)]) ]) +AC_CHECK_FUNCS(clock_gettime,libreplace_cv_have_clock_gettime=yes,[ + AC_CHECK_LIB(rt, clock_gettime, + [libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT=yes + libreplace_cv_have_clock_gettime=yes + AC_DEFINE(HAVE_CLOCK_GETTIME, 1, Define to 1 if there is support for clock_gettime)]) +]) AC_CHECK_FUNCS(get_current_dir_name) AC_HAVE_DECL(setresuid, [#include <unistd.h>]) AC_HAVE_DECL(setresgid, [#include <unistd.h>]) @@ -288,6 +294,12 @@ m4_include(timegm.m4) m4_include(repdir.m4) m4_include(crypt.m4) +if test x$libreplace_cv_have_clock_gettime = xyes ; then + SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC) + SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID) + SMB_CHECK_CLOCK_ID(CLOCK_REALTIME) +fi + AC_CHECK_FUNCS([printf memset memcpy],,[AC_MSG_ERROR([Required function not found])]) echo "LIBREPLACE_BROKEN_CHECKS: END" @@ -316,4 +328,35 @@ m4_include(libreplace_ld.m4) m4_include(libreplace_network.m4) m4_include(libreplace_macros.m4) + +dnl SMB_CHECK_CLOCK_ID(clockid) +dnl Test whether the specified clock_gettime clock ID is available. If it +dnl is, we define HAVE_clockid +AC_DEFUN([SMB_CHECK_CLOCK_ID], +[ + AC_MSG_CHECKING(for $1) + AC_TRY_LINK([ +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + ], + [ +clockid_t clk = $1; + ], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_$1, 1, + [Whether the clock_gettime clock ID $1 is available]) + ], + [ + AC_MSG_RESULT(no) + ]) +]) m4_ifndef([AC_USE_SYSTEM_EXTENSIONS],[m4_include(autoconf-2.60.m4)]) diff --git a/lib/replace/replace.c b/lib/replace/replace.c index 12716ea..f3459dd 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c @@ -760,3 +760,24 @@ int rep_strerror_r(int errnum, char *buf, size_t buflen) return 0; } #endif + +#ifndef HAVE_CLOCK_GETTIME +int rep_clock_gettime(clockid_t clk_id, struct timespec *tp) +{ + struct timeval tval; + switch (clk_id) { + case 0: /* CLOCK_REALTIME :*/ +#ifdef HAVE_GETTIMEOFDAY_TZ + gettimeofday(&tval,NULL); +#else + gettimeofday(&tval); +#endif + tp->tv_sec = tval.tv_sec; + tp->tv_nsec = tval.tv_usec * 1000; + break; + default: + return EINVAL; + } + return 0; +} +#endif diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 4efcb4c..055dd71 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -517,6 +517,10 @@ char *rep_get_current_dir_name(void); int rep_strerror_r(int errnum, char *buf, size_t buflen); #endif +#if !defined(HAVE_CLOCK_GETTIME) +#define clock_gettime rep_clock_gettime +#endif + #ifdef HAVE_LIMITS_H #include <limits.h> #endif diff --git a/lib/replace/system/config.m4 b/lib/replace/system/config.m4 index b8568a5..04364bc 100644 --- a/lib/replace/system/config.m4 +++ b/lib/replace/system/config.m4 @@ -11,6 +11,16 @@ AC_CHECK_HEADERS(sys/time.h utime.h) AC_HEADER_TIME AC_CHECK_FUNCS(utime utimes) +AC_CACHE_CHECK([if gettimeofday takes TZ argument],libreplace_cv_HAVE_GETTIMEOFDAY_TZ,[ +AC_TRY_RUN([ +#include <sys/time.h> +#include <unistd.h> +main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}], + libreplace_cv_HAVE_GETTIMEOFDAY_TZ=yes,libreplace_cv_HAVE_GETTIMEOFDAY_TZ=no,libreplace_cv_HAVE_GETTIMEOFDAY_TZ=yes)]) +if test x"$libreplace_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then + AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available]) +fi + # wait AC_HEADER_SYS_WAIT diff --git a/lib/replace/system/time.h b/lib/replace/system/time.h index 4abf295..ff26531 100644 --- a/lib/replace/system/time.h +++ b/lib/replace/system/time.h @@ -66,4 +66,10 @@ int rep_utime(const char *filename, const struct utimbuf *buf); int rep_utimes(const char *filename, const struct timeval tv[2]); #endif +#ifndef HAVE_CLOCK_GETTIME +#define CLOCK_REALTIME 0 +typedef int clockid_t; +int rep_clock_gettime(clockid_t clk_id, struct timespec *tp); +#endif + #endif diff --git a/lib/replace/wscript b/lib/replace/wscript index 66b0e87..8c1c57f 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -173,6 +173,7 @@ def configure(conf): define='DLOPEN_TAKES_UNSIGNED_FLAGS', headers='dlfcn.h dl.h') conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True) + conf.CHECK_FUNCS_IN('clock_gettime', 'rt', checklibc=True) # these headers need to be tested as a group on freebsd conf.CHECK_HEADERS(headers='sys/socket.h net/if.h', together=True) diff --git a/lib/util/time.m4 b/lib/util/time.m4 deleted file mode 100644 index 675e201..0000000 --- a/lib/util/time.m4 +++ /dev/null @@ -1,9 +0,0 @@ -AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[ -AC_TRY_RUN([ -#include <sys/time.h> -#include <unistd.h> -main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}], - samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=yes)]) -if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then - AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available]) -fi diff --git a/source3/configure.in b/source3/configure.in index d8bf554..1f4da24 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -121,7 +121,6 @@ fi m4_include(../lib/socket_wrapper/config.m4) m4_include(../lib/nss_wrapper/config.m4) -m4_include(../lib/util/time.m4) m4_include(m4/swat.m4) @@ -2369,23 +2368,8 @@ if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro]) fi - -if test x"$samba_cv_WITH_PROFILE" = x"yes"; then - - # On some systems (eg. Linux) librt can pull in libpthread. We - # don't want this to happen because libpthreads changes signal delivery - # semantics in ways we are not prepared for. This breaks Linux oplocks - # which rely on signals. - - AC_LIBTESTFUNC(rt, clock_gettime, - [ - AC_DEFINE(HAVE_CLOCK_GETTIME, 1, - [Whether clock_gettime is available]) - SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC) - SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID) - SMB_CHECK_CLOCK_ID(CLOCK_REALTIME) - ]) - +if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then + LIBS="$LIBS -lrt" fi AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[ diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h index e9015ff..6076479 100644 --- a/source3/include/smbprofile.h +++ b/source3/include/smbprofile.h @@ -894,8 +894,6 @@ extern bool do_profile_times; #define DEC_PROFILE_COUNT(x) profile_p->x-- #define ADD_PROFILE_COUNT(x,y) profile_p->x += (y) -#if defined(HAVE_CLOCK_GETTIME) - extern clockid_t __profile_clock; static inline uint64_t profile_timestamp(void) @@ -911,17 +909,6 @@ static inline uint64_t profile_timestamp(void) return (ts.tv_sec * 1000000) + (ts.tv_nsec / 1000); /* usec */ } -#else - -static inline uint64_t profile_timestamp(void) -{ - struct timeval tv; - GetTimeOfDay(&tv); - return (tv.tv_sec * 1000000) + tv.tv_usec; -} - -#endif - /* end of helper macros */ #define DO_PROFILE_INC(x) \ diff --git a/source3/lib/time.c b/source3/lib/time.c index 71d6587..fad5d97 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -356,11 +356,8 @@ struct timeval convert_timespec_to_timeval(const struct timespec ts) struct timespec timespec_current(void) { - struct timeval tv; struct timespec ts; - GetTimeOfDay(&tv); - ts.tv_sec = tv.tv_sec; - ts.tv_nsec = tv.tv_usec * 1000; + clock_gettime(CLOCK_REALTIME, &ts); return ts; } diff --git a/source3/m4/aclocal.m4 b/source3/m4/aclocal.m4 index 3ca44bd..b33658f 100644 --- a/source3/m4/aclocal.m4 +++ b/source3/m4/aclocal.m4 @@ -799,37 +799,6 @@ AC_DEFUN([SMB_CHECK_DMAPI], ]) -dnl SMB_CHECK_CLOCK_ID(clockid) -dnl Test whether the specified clock_gettime clock ID is available. If it -dnl is, we define HAVE_clockid -AC_DEFUN([SMB_CHECK_CLOCK_ID], -[ - AC_MSG_CHECKING(for $1) - AC_TRY_LINK([ -#if TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -# if HAVE_SYS_TIME_H -# include <sys/time.h> -# else -# include <time.h> -# endif -#endif - ], - [ -clockid_t clk = $1; - ], - [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_$1, 1, - [Whether the clock_gettime clock ID $1 is available]) - ], - [ - AC_MSG_RESULT(no) - ]) -]) - dnl SMB_IF_RTSIGNAL_BUG([actions if true], dnl [actions if false], dnl [actions if cross compiling]) diff --git a/source3/profile/profile.c b/source3/profile/profile.c index c8e7c38..4a61753 100644 --- a/source3/profile/profile.c +++ b/source3/profile/profile.c @@ -29,11 +29,9 @@ #ifdef WITH_PROFILE static int shm_id; static bool read_only; -#if defined(HAVE_CLOCK_GETTIME) clockid_t __profile_clock; bool have_profiling_clock = False; #endif -#endif struct profile_header *profile_h; struct profile_stats *profile_p; @@ -138,8 +136,6 @@ static void reqprofile_message(struct messaging_context *msg_ctx, open the profiling shared memory area ******************************************************************/ -#ifdef HAVE_CLOCK_GETTIME - /* Find a clock. Just because the definition for a particular clock ID is * present doesn't mean the system actually supports it. */ @@ -195,7 +191,6 @@ static void init_clock_gettime(void) ("could not find a working clock for profiling")); return; } -#endif bool profile_setup(struct messaging_context *msg_ctx, bool rdonly) { @@ -203,9 +198,7 @@ bool profile_setup(struct messaging_context *msg_ctx, bool rdonly) read_only = rdonly; -#ifdef HAVE_CLOCK_GETTIME init_clock_gettime(); -#endif again: /* try to use an existing key */ diff --git a/source4/configure.ac b/source4/configure.ac index 91d7a3b..f415d0b 100644 --- a/source4/configure.ac +++ b/source4/configure.ac @@ -20,7 +20,6 @@ m4_include(../lib/util/util.m4) m4_include(../lib/util/fsusage.m4) m4_include(../lib/util/xattr.m4) m4_include(../lib/util/capability.m4) -m4_include(../lib/util/time.m4) m4_include(../lib/popt/samba.m4) m4_include(../lib/util/charset/config.m4) m4_include(lib/socket/config.m4) -- Samba Shared Repository