Tasklet vs workqueues

santhosh kumars karuna.linux at gmail.com
Mon Aug 1 09:54:19 EDT 2011


On Sat, Jul 30, 2011 at 10:45 PM, Dave Hylands <dhylands at gmail.com> wrote:
> Hi Santosh,
>
> On Sat, Jul 30, 2011 at 5:24 AM, santhosh kumars <karuna.linux at gmail.com> wrote:
>> 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
>



More information about the Kernelnewbies mailing list