diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-19 22:05:01 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-19 22:05:01 -0400 |
commit | 6e4d80815bd659f34965d58ccf73ebd50a46b3f3 (patch) | |
tree | c1cdc0087f2b8c294b794cddc7e38b4b56c0ebce /jackd/engine.c | |
parent | 39e0d9dd7856fb29ea3f3d6af26683dda1556980 (diff) | |
download | jack1-6e4d80815bd659f34965d58ccf73ebd50a46b3f3.tar.gz |
remove watchdog thread from engine/jackd, since Linux no longer allows SCHED_{FIFO,RR} tasks to take over the cpu unless the user misconfigures a very obscure part of their system configuration
Diffstat (limited to 'jackd/engine.c')
-rw-r--r-- | jackd/engine.c | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/jackd/engine.c b/jackd/engine.c index 2ab4c16..2023567 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -835,7 +835,6 @@ jack_engine_process (jack_engine_t *engine, jack_nframes_t nframes) JSList *node; engine->process_errors = 0; - engine->watchdog_check = 1; for (node = engine->clients; node; node = jack_slist_next (node)) { jack_client_control_t *ctl = @@ -932,102 +931,6 @@ jack_engine_post_process (jack_engine_t *engine) jack_check_clients (engine, 0); } -#ifdef JACK_USE_MACH_THREADS - -static int -jack_start_watchdog (jack_engine_t *engine) -{ - /* Stephane Letz : letz@grame.fr Watch dog thread is - * not needed on MacOSX since CoreAudio drivers - * already contains a similar mechanism. - */ - return 0; -} - -void -jack_stop_watchdog (jack_engine_t *engine) -{ - /* Stephane Letz : letz@grame.fr Watch dog thread is - * not needed on MacOSX since CoreAudio drivers - * already contains a similar mechanism. - */ - return; -} - -#else - -static void * -jack_watchdog_thread (void *arg) -{ - jack_engine_t *engine = (jack_engine_t *) arg; - struct timespec timo; - - timo.tv_sec = JACKD_WATCHDOG_TIMEOUT / 1000; - timo.tv_nsec = (JACKD_WATCHDOG_TIMEOUT - (timo.tv_sec * 1000)) * 1000; - engine->watchdog_check = 0; - - while (1) { - nanosleep (&timo, NULL); - if (!engine->freewheeling && engine->watchdog_check == 0) { - - jack_error ("jackd watchdog: timeout - killing jackd"); - - /* Kill the current client (guilt by association). */ - if (engine->current_client) { - kill (engine->current_client-> - control->pid, SIGKILL); - } - - /* kill our process group, try to get a dump */ - kill (-getpgrp(), SIGABRT); - /*NOTREACHED*/ - exit (1); - } - engine->watchdog_check = 0; - } -} - -static int -jack_start_watchdog (jack_engine_t *engine) -{ - int watchdog_priority = engine->rtpriority + 10; -#ifndef __OpenBSD__ - int max_priority = sched_get_priority_max (SCHED_FIFO); -#else - int max_priority = -1; -#endif - - if ((max_priority != -1) && - (max_priority < watchdog_priority)) - watchdog_priority = max_priority; - - if (jack_client_create_thread (NULL, &engine->watchdog_thread, watchdog_priority, - TRUE, jack_watchdog_thread, engine)) { - jack_error ("cannot start watchdog thread"); - return -1; - } - - return 0; -} - -void -jack_stop_watchdog (jack_engine_t *engine) -{ - /* Cancel the watchdog thread and wait for it to terminate. - * - * The watchdog thread is not used on MacOSX since CoreAudio - * drivers already contain a similar mechanism. - */ - if (engine->control->real_time && engine->watchdog_thread) { - VERBOSE (engine, "stopping watchdog thread"); - pthread_cancel (engine->watchdog_thread); - pthread_join (engine->watchdog_thread, NULL); - } - - return; -} -#endif /* !JACK_USE_MACH_THREADS */ - static jack_driver_info_t * jack_load_driver (jack_engine_t *engine, jack_driver_desc_t * driver_desc) @@ -1130,12 +1033,6 @@ jack_engine_load_driver (jack_engine_t *engine, engine->driver_desc = driver_desc; engine->driver_params = driver_params; - if (engine->control->real_time) { - if (jack_start_watchdog (engine)) { - return -1; - } - engine->watchdog_check = 1; - } return 0; } @@ -1869,7 +1766,6 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock, engine->next_client_id = 1; /* 0 is a NULL client ID */ engine->port_max = port_max; engine->server_thread = 0; - engine->watchdog_thread = 0; engine->rtpriority = rtpriority; engine->silent_buffer = 0; engine->verbose = verbose; @@ -2667,8 +2563,6 @@ jack_engine_delete (jack_engine_t *engine) pthread_join (engine->server_thread, NULL); #endif - jack_stop_watchdog (engine); - VERBOSE (engine, "last xrun delay: %.3f usecs", engine->control->xrun_delayed_usecs); |