Linux内核实践之tasklet机制

作者:bullbat

       源代码分析与原理部分参见前面的文章linux中断延迟之tasklet,这里我们看看他的使用,和前面介绍的工作队列、等待队列等相同,声明采用两种方法,我们在init函数中直接采用tasklet_schedule(&my_tasklet);调度,内核中的实现很简单:

void __tasklet_schedule(struct tasklet_struct *t)

{

unsigned long flags;

local_irq_save(flags);

t->next = NULL;

*__get_cpu_var(tasklet_vec).tail = t;

__get_cpu_var(tasklet_vec).tail = &(t->next);

raise_softirq_irqoff(TASKLET_SOFTIRQ);

local_irq_restore(flags);

}

上面几个函数在前面的文章linux软中断已经介绍过了,直接看使用

#include <linux/init.h>

#include <linux/module.h>

#include <linux/kernel.h>

#include <linux/interrupt.h>

static void tasklet_func(unsigned long value)

{

printk("This is tasklet function!\n");

}

/*用静态方式声明并定义一个tasklet,动态方式一样*/

DECLARE_TASKLET(my_tasklet,&tasklet_func,0);

static __init int my_tasklet_init(void)

{

/*直接调度我们的函数*/

tasklet_schedule(&my_tasklet);

return 0;

}

static void my_tasklet_exit(void)

{

}

module_init(my_tasklet_init);

module_exit(my_tasklet_exit);

运行结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值