Linux内核实践之tasklet机制

2014-11-24 13:15:13 · 作者: · 浏览: 2


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);


}


#include


#include


#include


#include



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);


运行结果: