Can a Bottom half be scheduled from a kernel thread

Pranay Srivastava pranjas at gmail.com
Tue May 13 05:58:29 EDT 2014


On Tue, May 13, 2014 at 2:18 PM, Vishwas Srivastava
<vishu.kernel at gmail.com> wrote:
> Appreciate the quick response..
>
> Hi All,
>              i am concerned about the scheduling the tasklet. The running of
> the tasklet is anyway controlled by the kernel at its own dissertation.
> But scheduling can be done from anywhere?? Correct?
>

I think by the next tick it would run. Since when you do
tasklet_schedule you are setting the softirq pending
flag.

> Also can
> Tasklets can be used for "any" deferred work or it is strictly stick to the
> work which can not be done in the "top" half??

Really depends, what I think is that you still wouldn't want to do too
much in tasklet,
if it's heavy processing better give it a work-queue. So basically use
tasklet as a breakup of your top
half only. That timely things still are done quick indeed just not that quick.

> For example, if there is some work which is prepared ready by a kernel
> thread (but thread dont want to process it immediately, rather want to
> deffer it for sometime) and the intention is to process this "prapared work"
> at some later time. In the situation like this, can we use the tasklet to do
> this?
queue_delayed_work?
or maybe you can do just a kthread_create only
for the thread and wakeup_process(<your_kthread>) when you want to run it.

You can do anything inside the code that's upto you, only rule is no
sleepy things,
and no copy_to_ or copy_from both can sleep and both require process
context which you
don't have. Besides the no sleeping rule, you can do whatever you
like. By scheduling, I mean scheduling
the current code by explicitly calling schedule or some other sleeping
function call. But you can
wake_up, tasklet_schedule, complete, complete_all etc.

you can do kmalloc, don't forget GFP_ATOMIC, but no vmalloc. You can
do memcpy, but no copy_to/copy_from

>
>
>
>
>
> On Tue, May 13, 2014 at 6:28 AM, Pranay Srivastava <pranjas at gmail.com>
> wrote:
>>
>>
>> On May 13, 2014 2:36 AM, "Vishwas Srivastava" <vishu.kernel at gmail.com>
>> wrote:
>> >
>> > Hi All,
>> >             This may sound a dumb question. I just want to know if a
>> > tasklet can be scheduled from a kernel thread.
>>
>> You can do tasklet_schedule in case I am getting your question.
>>
>> > what are the pros and crons of doing so?
>>
>> Don't sleep or schedule the tasklet code. It needs to be atomic since it
>> runs via TASKLET_SOFTIRQ.
>>
>> > thanks,
>> > Vishwas S
>> >
>> > _______________________________________________
>> > Kernelnewbies mailing list
>> > Kernelnewbies at kernelnewbies.org
>> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>> >
>
>



-- 
        ---P.K.S



More information about the Kernelnewbies mailing list