taskset

tasklet的作用

用tasklet不仅保证中断可以快速响应,而且将大部分的任务放到终端的后半段,降低中断优先级,可以使在执行后半段中断服务的时候,响应当时产生的优先级更高的中断,提高系统的实时性能。

tasklet(小任务机制)

        类似于内核定时器,始终在中断期间运行,始终在调度它的同一cpu上运行,并且都接收一个unsigned long的参数。和内核定时器不同的是,我们不能要求tasklet在某个给定的时间执行,调度一个tasklet,表明我们只是希望内核选择其后的某个 时间来执行给定的函数。

        tasklet以数据结构的形式存在,并在使用前必须初始化。

        #include <linux/interrupt.h>

struct tasklet_struct {

       /* ... */

              void (*func)(unsigned long);

       unsigned long data;

};

void tasklet_init(struct tasklet_struct *t,void (*func)(unsigned long), unsigned long data);

DECLARE_TASKLET(name, func, data);

DECLARE_TASKLET_DISABLED(name, func, data);

        一个tasklet可以在稍后被禁止或者重新启用,只有启用的次数和禁止的次数相同时,tasklet才会被执行。

        相关函数如下:

void tasklet_disable(struct tasklet_struct *t);----禁止指定的tasklet,但仍可调度

void tasklet_disable_nosync(struct tasklet_struct *t);--禁用指定的tasklet,启用前不可调度。

void tasklet_enable(struct tasklet_struct *t);-----启用指定的tasklet

void tasklet_schedule(struct tasklet_struct *t);----调度执行指定的tasklet

void tasklet_hi_schedule(struct tasklet_struct *t);---高优先级

void tasklet_kill(struct tasklet_struct *t);----确保指定的tasklet不会再次被调度执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值