]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
some time changes
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 13 Nov 2007 18:47:08 +0000 (18:47 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 13 Nov 2007 18:47:08 +0000 (18:47 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6238 d0543943-73ff-0310-b7d9-9358b9ac24b2

Makefile.am
configure.in
src/switch_apr.c
src/switch_time.c [moved from src/softtimer.c with 95% similarity]

index 23a2141af25f92c4cbfb329f1f76849f1b616ec2..5631c6a506d2067faa69c8f152ba41eb804f690a 100644 (file)
@@ -56,7 +56,7 @@ src/switch_stun.c\
 src/switch_log.c\
 src/switch_xml.c\
 src/switch_config.c\
-src/softtimer.c\
+src/switch_time.c\
 libs/stfu/stfu.c\
 src/switch_cpp.cpp\
 libs/libteletone/src/libteletone_detect.c\
index 547e4cb075d280db4c372bc6c6e35c57d4ce36da..20ae00f2625718b73ff10bf4e63d3d387d5f8bcc 100644 (file)
@@ -188,6 +188,9 @@ AC_FUNC_STRFTIME
 AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall usleep])
 AC_CHECK_FUNCS([sched_setscheduler setpriority setrlimit setgroups initgroups])
 
+AC_CHECK_LIB(rt, clock_gettime, [AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if you have clock_gettime()])])
+AC_CHECK_LIB(rt, clock_nanosleep, [AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define if you have clock_nanosleep()])])
+
 AC_CHECK_DECL([RLIMIT_MEMLOCK],
        [AC_DEFINE([HAVE_RLIMIT_MEMLOCK],[1],[RLIMIT_MEMLOCK constant for setrlimit])],,
        [#ifdef HAVE_SYS_RESOURCE_H
index 5546fd97a6bd25920d0681d1966872bf3d2d1c45..6f02df7540beb9ba43b5aacc40c5f2431bda3241 100644 (file)
@@ -233,7 +233,13 @@ SWITCH_DECLARE(switch_status_t) switch_mutex_trylock(switch_mutex_t * lock)
 
 SWITCH_DECLARE(switch_time_t) switch_time_now(void)
 {
+#ifdef HAVE_CLOCK_GETTIME
+       struct timespec ts;
+       clock_gettime(CLOCK_REALTIME,&ts);
+       return ts.tv_sec * APR_USEC_PER_SEC + (ts.tv_nsec/1000);
+#else
        return (switch_time_t) apr_time_now();
+#endif
 }
 
 SWITCH_DECLARE(switch_status_t) switch_time_exp_gmt_get(switch_time_t * result, switch_time_exp_t * input)
@@ -256,17 +262,6 @@ SWITCH_DECLARE(switch_status_t) switch_time_exp_gmt(switch_time_exp_t * result,
        return apr_time_exp_gmt((apr_time_exp_t *) result, input);
 }
 
-SWITCH_DECLARE(void) switch_sleep(switch_interval_time_t t)
-{
-#if defined(HAVE_USLEEP)
-       usleep(t);
-#elif defined(WIN32)
-       Sleep((DWORD) ((t) / 1000));
-#else
-       apr_sleep(t);
-#endif
-}
-
 
 SWITCH_DECLARE(switch_status_t) switch_rfc822_date(char *date_str, switch_time_t t)
 {
similarity index 95%
rename from src/softtimer.c
rename to src/switch_time.c
index 0444555535b2364cc407c281f580a9480e58ace5..a4a4e0dd655ab4b1600ff7236d357904177b00b9 100644 (file)
@@ -80,6 +80,29 @@ static timer_matrix_t TIMER_MATRIX[MAX_ELEMENTS + 1];
 #define IDLE_SPEED 100
 
 
+SWITCH_DECLARE(void) switch_sleep(switch_interval_time_t t)
+{
+       
+#if defined(HAVE_CLOCK_NANOSLEEP)
+       struct timespec ts;
+       ts.tv_sec = t / APR_USEC_PER_SEC;
+       ts.tv_nsec = (t % APR_USEC_PER_SEC) * 1000;
+       
+       clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL);
+       
+#elif defined(HAVE_USLEEP)
+       usleep(t);
+#elif defined(WIN32)
+       Sleep((DWORD) ((t) / 1000));
+#else
+       apr_sleep(t);
+#endif
+
+
+}
+
+
+
 static switch_status_t timer_init(switch_timer_t *timer)
 {
        timer_private_t *private_info;