Цитата(vshemm @ Mar 25 2008, 15:13)

А какой период таймера? Если хотя бы секунд 10 - то, может, все-таки перезагрузиться?
0,5 с
Цитата(vshemm @ Mar 25 2008, 15:13)

Вообще, при малых периодах таймера его сброс делают не из юзерспейса, а по ядерному таймеру (например, w83877f_wdt.c).
так и сделал, но сейчас еще проверяю флаг, выставляемый userspace-ом, ему даю до 30с - убрать не проблема
Код
static void brandname_wdt_pingtimer(unsigned long data)
{
if(time_before(jiffies, next_heartbeat))
{
/* set timer again */
timer.expires = jiffies + WDT_INTERVAL;
add_timer(&timer);
/* kick watchdog */
if (flg == 0) {
Цитата(vshemm @ Mar 25 2008, 15:13)

В этом случае, даже при большой сетевой загрузке, вотчдог "сбросится", т.к. ядерные таймеры выполняются на уровне softirq, как и основные обработчики сетевых пакетов (причем таймеры даже имеют бОльший приоритет, т.е. будут выполняться в первую очередь).
Вот в этом весь мой вопрос. Я не знаю как работает ядро, надо учить матчасть, но спросить не грех. Допустим, что fast обработчик только у таймера, другие обработчики не отключают чужие прерывания.
У меня (и 2.4, и 2.6 ядра) время между срабатыванием таймера и передачей управления моей функции не может при каких-либо условиях оказаться больше 0,5с?