From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <46DD59D9.9010003@domain.hid> Date: Tue, 04 Sep 2007 15:12:57 +0200 From: Johan Borkhuis MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Xenomai-core] Make watchdog-timer configurable List-Id: "Xenomai life and development \(bug reports, patches, discussions\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai-core I made the following change to Xenomai (version 2.3.2, but it could also be applied to 2.4 as the watchdog code has not been changed). The watchdog timeout is fixed at 4 seconds. For us this is a problem as there are some processes that take more time than this. I made the following change to allow this to be changed through the Linux kernel configuration. The value is configurable between 1 and 60 seconds. Below is a patchfile that implements this change. Please let me know if you have comments on this, or if there are problems with this change. ================ diff -u -r org/xenomai-2.3.2/ksrc/nucleus/Kconfig xenomai-2.3.2/ksrc/nucleus/Kconfig --- org/xenomai-2.3.2/ksrc/nucleus/Kconfig 2007-07-06 18:42:14.000000000 +0200 +++ xenomai-2.3.2/ksrc/nucleus/Kconfig 2007-09-04 14:13:41.000000000 +0200 @@ -172,6 +172,17 @@ behalf of the timer tick handler, thus is only active after the timer has been started. +config XENO_OPT_WATCHDOG_PERIOD + depends on XENO_OPT_WATCHDOG + int "Watchdog period (s)" + default 4 + range 1 60 + help + + Nr of seconds of uninterrupted real-time activity after which + the watchdog triggers. + + menu "Timing" config XENO_OPT_TIMING_PERIODIC diff -u -r org/xenomai-2.3.2/ksrc/nucleus/pod.c xenomai-2.3.2/ksrc/nucleus/pod.c --- org/xenomai-2.3.2/ksrc/nucleus/pod.c 2007-07-07 10:18:57.000000000 +0200 +++ xenomai-2.3.2/ksrc/nucleus/pod.c 2007-09-04 14:06:35.000000000 +0200 @@ -2925,7 +2925,7 @@ return nkpod->svctable.faulthandler(fltinfo); } -#ifdef CONFIG_XENO_OPT_WATCHDOG +#if (defined CONFIG_XENO_OPT_WATCHDOG) && (CONFIG_XENO_OPT_WATCHDOG_PERIOD > 0) /*! * @internal @@ -2948,7 +2948,7 @@ return; } - if (unlikely(++sched->wd_count >= 4)) { + if (unlikely(++sched->wd_count >= CONFIG_XENO_OPT_WATCHDOG_PERIOD)) { xnltt_log_event(xeno_ev_watchdog, thread->name); xnprintf("watchdog triggered -- killing runaway thread '%s'\n", thread->name); ================ Kind regards, Johan Borkhuis