码迷,mamicode.com
首页 > 其他好文 > 详细

小任务tasklet应用

时间:2018-03-10 13:54:31      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:加锁   pos   task   sch   lan   tar   url   实现   tom   

tasklet(小任务)
一个使用tasklet的中断程序首先会通过执行中断处理程序来快速完成上半部分的工作,接着通过调度tasklet使得下半部分的工作得以完成,但是下半部分何时执行属于内核的工作。
tasklet定义在linux/interrupt.h中,实现在kernel/softirq.c中。
struct tasklet_struct {
    struct tasklet_struct *next;
    unsigned long state;
    atomic_t count;
    void (*func)(unsigned long);
    unsigned long data;
};
同一时刻只能有一个同类的tasklet底半部在执行,即使是多CPU情况。
(访问共享资源不用加锁)。

函数
struct tasklet_struct mytasklet;

void tasklet_init(struct tasklet_struct *t,
             void (*func)(unsigned long), unsigned long data);
tasklet_schedule(&mytasklet);  //掉用底半部,注意,这不是立即调用,是调度,意味着tasklet底半部会在顶半部执行完成后才会执行。

 

参考:

1. tasklet_workqueue

2. linux内核对中断的处理方式

小任务tasklet应用

标签:加锁   pos   task   sch   lan   tar   url   实现   tom   

原文地址:https://www.cnblogs.com/embedded-linux/p/8538562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!