|
[Kernel-janitors] Calling yield() Considered Harmful: msg#00013linux.kernel.janitors
In 2.6, the semantics of calling yield() changed from "sleep for a bit" to "I really don't want to run for a while". This matches POSIX better, but there's a lot of drivers still using yield() when they mean cond_resched(), schedule() or even schedule_timeout(). Here's a list: $ find drivers/ -type f |xargs grep 'yield[^a-z]*(' drivers/cdrom/cdu31a.c: yield(); drivers/cdrom/sonycd535.c: yield(); drivers/macintosh/adb.c: yield(); drivers/message/i2o/i2o_core.c: yield(); drivers/message/i2o/i2o_core.c: yield(); drivers/mtd/chips/cfi_cmdset_0002.c: yield(); drivers/mtd/nand/nand.c: yield (); drivers/net/depca.c: yield(); drivers/net/sb1000.c: yield(); drivers/net/sb1000.c: yield(); drivers/net/sis900.c: yield(); drivers/net/e100/e100_eeprom.c: yield(); drivers/net/e100/e100_eeprom.c: yield(); drivers/net/e100/e100_main.c: yield(); drivers/net/e100/e100_phy.c: yield(); drivers/net/e100/e100_phy.c: yield(); drivers/net/e100/e100_test.c: yield(); drivers/scsi/NCR5380.c: yield(); drivers/scsi/ibmmca.c: yield(); drivers/scsi/ibmmca.c: yield(); drivers/scsi/megaraid.c: udelay(100); yield(); drivers/usb/core/message.c: yield (); As always, this isn't a search-and-replace type of job. Let's take the first one as an example: static inline void sony_sleep(void) { unsigned long flags; if (cdu31a_irq <= 0) { yield(); } else { /* Interrupt driven */ save_flags(flags); cli(); enable_interrupts(); interruptible_sleep_on(&cdu31a_irq_wait); restore_flags(flags); } } If you look at how sony_sleep() is typically used, what you really want to do is schedule_timeout(1). But someone needs to look at all these cases.. do I hear a volunteer? -- "It's not Hollywood. War is real, war is primarily not about defeat or victory, it is about death. I've seen thousands and thousands of dead bodies. Do you think I want to have an academic debate on this subject?" -- Robert Fisk |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | In the News 2002: 00013, Patty Chang |
|---|---|
| Next by Date: | Secrets Of Real Estate Investing sjfo: 00013, Benito Galindo |
| Previous by Thread: | In the News 2002i: 00013, Patty Chang |
| Next by Thread: | Secrets Of Real Estate Investing sjfo: 00013, Benito Galindo |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |