Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 18 Aug 2003 14:44:03 -0400 | From | Jeff Garzik <> | Subject | Re: Fix up riscom8 driver to use work queues instead of task queueing. |
| |
On Mon, Aug 18, 2003 at 11:21:07AM -0700, Linus Torvalds wrote: > > On Mon, 18 Aug 2003, Jeff Garzik wrote: > > > > Should we just make schedule_delayed_work(foo, 1) the default for a > > schedule_work() call? > > Why? There are cases where you may really want to get the work done asap, > so the regular "schedule_work()" is the right thing. While the "delayed"
schedule_work() is _not_ for that. As currently implemented, you have no guarantees that your schedule_work()-initiated work will even begin in this century.
Drivers are using schedule_work() to create process contexts where they can sleep, potentially for many seconds. On a single cpu system, or a loaded SMP system, schedule_work() from one of the drivers you converted could easily be delayed for 30 seconds or more. schedule_work() is not a fast path.
If work needs to happen ASAP, then you really want to replace those schedule_work() calls with schedule_tasklet() calls that do the "must be done asap" work, and then schedule_work() the stuff that requires process context... So, too, I would have thought that bottom-half completion routines mapped more directly to schedule_tasklet() anyway.
Jeff
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |