Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.arcetri.astro.it/irlab/doc/library/linux/khg/HyperNews/get/devices/basics/2.html
Дата изменения: Thu Mar 23 12:37:13 2000
Дата индексирования: Wed Sep 15 04:18:55 2010
Кодировка:

Поисковые слова: arp 220
found reason for select() problem The HyperNews Linux KHG Discussion Pages

Feedback: found reason for select() problem

Forum: Device Driver Basics
Keywords: select add_timer() del_timer()
Date: Wed, 13 Nov 1996 14:45:59 GMT
From: <unknown>

Hello again;

Evidently not many folks read this -- no responses after
4 months -- so I'll answer my own question :-)

There were several problems with the original approach. These
were all discovered through trial-and-error so I suppose
there might still be other theoretical problems but at least
now everthing seems to work.

1) call del_timer(&pc39_tl) before starting a new one.
2) always call select_wait (&pc39_wq, wait), not just when
   wait != 0.
3) pc39_tl.expires is the jiffy to wake up on, not the number
   of elapsed jiffies as it says in the KHG. so, it should be:
   pc39_tl.expires = jiffies + PC39_SELTO;

Hope this helps someone else someday. If this is getting
too hard to follow, I'll be happy to send you the whole
driver.

Elwood Downey
ecdowney@noao.edu