Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.arcetri.astro.it/irlab/doc/library/linux/khg/HyperNews/get/devices/devices/12.html
Дата изменения: Thu Mar 23 12:37:17 2000
Дата индексирования: Wed Sep 15 04:21:24 2010
Кодировка:
Does anybody know why kernel wakes my driver up without apparant reasons? The HyperNews Linux KHG Discussion Pages

Does anybody know why kernel wakes my driver up without apparant reasons?

Forum: Device Drivers
Keywords: wake_up interrupt time_out
Date: Wed, 26 Feb 1997 17:02:31 GMT
From: David van Leeuwen <david@tm.tno.nl>

Hi, i've written a device driver for a cdrom device. It's old. I know. But i keep getting compaints that it doesn't work reliably.

It used to work OK in the old 1.3.fourties. Since more modern kernel version, it tended to break more often. Read errors...

I spent days tracking down the bug, it appeared that the driver was woken without an interrupt occurring, or my own time-out causing the wake-up. I was stymied.

Now i posted a message similar to this to the kernel list half a year ago. But i wasn't capable of reading the list (sorry) because i use my e-mail address at work. Apparently, there was some short reaction that my go_to_sleep routine should do something like

	while(!my_interrupt_woke_me)
		sleep_on(&wait)

Why is this? Why does the kernel wake me up if i didn't ask for it (i.e., no interrupt occured and no time-out occurred)

I found out that the sleep_on() could immediately wakeup (i.e., not go to sleep) for many times in a row. I had to hack around by trying to go to sleep up to 100 times, but i am not charmed by the hack.

Does it have to do with the (new?) macros DEVICE_TIMEOUT and TIMEOUT_VALUE that i've _not_ defined (because i wrote it in the KHG 0.5 days...).

Thanks,

---david (david@tm.tno.nl)