RE: kthread_create() vs tasklet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

>> 
>>  >
>>  > On Wed, May 7, 2008 at 12:55 PM, Peter Teoh
>> <htmldeveloper@xxxxxxxxx>  > wrote:
>>  >> Not sure why....but under the drivers directory, u can see a lot
>> more  >> tasklet than kthread_create().
>>  >>
>> 
>>  Huh? I'm not sure if I understand this right ... But I thought they
>> are  completely different things (rather than two comparable items).
>> 
>>  kthread_create() is to create a kernel thread (A thread that'll
>> always  execute in kernel mode and will have no user context). Where
>> as tasklet  is a mechanism to implement bottom halves - hence they
>> are generally  "scheduled" to be executed in ISRs. They are run upon
>> return from IRQ or  by ksoftirq.
>> 
>>  Did I understand the question right?
>> 
>>  Rajat
>> 
> 
> Yes, u are right.   And my questions rightfully may not have any
> specific answer....case by case basis.   Specifically I am looking for
> rewriting the tasklets as kernelthreads, if possible.   Tasklets does
> not migrate from CPU to CPU, right?   whereas kernelthread do, so it
> may provide better load balancing?

Yes, but you really won't write a code that needs load balancing, in a
tasklet. In fact you would often want the tasklet to run on the same CPU
(per-CPU variables, better cache hit etc.). Tasklets are a bottom half
mechanism to shorten the ISR and yet be able to respond to interrupts
quickly. 

> 
> Correct me if wrong...thanks.


Kernel threads aren't meant to be a replacement for tasklets. They have
completely different characteristics and objectives. And there are
restrictions that apply to tasklets (no sleeping etc.). 

Although work queues (another bottom half mechanism) and kernel threads
can share some amount of common things, since work queues are in process
context.

Thanks,

Rajat

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux