allow 100 microsecond tolerance on timer loop

This commit is contained in:
Anthony Minessale 2011-03-28 13:50:42 -05:00
parent d04b9a85a5
commit 6388e03d07
2 changed files with 11 additions and 6 deletions

View File

@ -1655,18 +1655,18 @@ static void switch_load_core_config(const char *file)
switch_core_default_dtmf_duration((uint32_t) tmp);
}
} else if (!strcasecmp(var, "enable-monotonic-timing")) {
switch_time_set_monotonic(switch_true(var));
switch_time_set_monotonic(switch_true(val));
} else if (!strcasecmp(var, "enable-softtimer-timerfd")) {
switch_time_set_timerfd(switch_true(var));
switch_time_set_timerfd(switch_true(val));
if (switch_true(val)) {
switch_clear_flag((&runtime), SCF_CALIBRATE_CLOCK);
}
} else if (!strcasecmp(var, "enable-clock-nanosleep")) {
switch_time_set_nanosleep(switch_true(var));
switch_time_set_nanosleep(switch_true(val));
} else if (!strcasecmp(var, "enable-cond-yield")) {
switch_time_set_cond_yield(switch_true(var));
switch_time_set_cond_yield(switch_true(val));
} else if (!strcasecmp(var, "enable-timer-matrix")) {
switch_time_set_matrix(switch_true(var));
switch_time_set_matrix(switch_true(val));
} else if (!strcasecmp(var, "max-sessions") && !zstr(val)) {
switch_core_session_limit(atoi(val));
} else if (!strcasecmp(var, "verbose-channel-events") && !zstr(val)) {

View File

@ -756,7 +756,8 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime)
while (globals.RUNNING == 1) {
runtime.reference += STEP_MIC;
while ((ts = time_now(runtime.offset)) < runtime.reference) {
while (((ts = time_now(runtime.offset)) + 100) < runtime.reference) {
if (ts < last) {
if (MONO) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Virtual Migration Detected! Syncing Clock\n");
@ -770,6 +771,10 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime)
runtime.initiated += diff;
rev_errs++;
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT,
"If you see this message many times try setting the param enable-clock-nanosleep to true in switch.conf.xml or consider a nicer machine to run me on. I AM *FREE* afterall.\n");
} else {
rev_errs = 0;
}