Tasklet vs workqueues
From: santhosh kumars <hidden>
Date: 2011-08-01 13:54:19
On Sat, Jul 30, 2011 at 10:45 PM, Dave Hylands [off-list ref] wrote:
Hi Santosh, On Sat, Jul 30, 2011 at 5:24 AM, santhosh kumars [off-list ref] wrote:quoted
Hi All, I took following lines from robert love linux kernel development. " If you need a schedulable entity to perform your bottom-half processing, you need work queues.They are the only bottom-half mechanisms that run in process context, and thus, the only ones that can sleep.This means they are useful for situations in which you need to allocate a lot of memory, obtain a semaphore, or perform block I/O. If you do not need a kernel thread to handle your deferred work, consider a tasklet instead ." Here some times tasklets also runs in kernel thread context(by ksoftirqd/n).So I want to know what is the exact difference between workqueue and tasklet.A tasklet is something that in some OSes, might be called a software IRQ. It runs with interrupts enabled, but context switches are disabled. They are normally associated with device drivers where there is some extended processing that needs to be done, but perhaps not from an interrupt handler. http://www.xml.com/ldd/chapter/book/ch09.html#t5 The workqueues are documented here: http://lwn.net/Articles/11360/ Items in a workqueue are executed from a thread context (whereas tasklets are sort of half way between interrupt context and thread context). You can't perform blocking operations from a tasklet,
so we can conclude like tasklets some times runs in process context(kthread context) but that time contextswtiching is disabled.
whereas you can from a workqueue. Both were found using simple google searches. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com