在内核中的中断机制中,为了防止解决中断嵌套(防止一个中断打断另一个中断)的问题,引进小任务机制:
使用小任务机制需要三步:
第一:定义一个struct tasklet_struct的类;
第二步:初始化taskelet将处理任务的函数和takslet任务捆绑;
第三步:调度tasklet :tasklet_schedule(&tasklet);
12 #include <linux/delay.h> 13 #include <linux/clk.h> 14 #include <linux/miscdevice.h> 15 #include <linux/io.h> 16 #include <linux/ioport.h> 17 #include <asm/uaccess.h> 18 19 #include <linux/gpio.h> 20 #include <mach/gpio.h> 21 #include <plat/gpio-cfg.h> 22 23 MODULE_LICENSE("GPL"); 24 MODULE_AUTHOR("bunfly"); 25 26 void my_tasklet_func(unsigned long data); 27 struct tasklet_struct my_tasklet; 28 29 int test_init() 30 { 31 printk("hello kernel\n"); 32 tasklet_init(&my_tasklet,my_tasklet_func, 0); 33 tasklet_schedule(&my_tasklet); 34 return 0; 35 } 36 37 void test_exit() 38 { 39 tasklet_kill(&my_tasklet); 40 printk("exit\n"); 41 } 42 43 module_init(test_init); 44 module_exit(test_exit); 45 46 void my_tasklet_func(unsigned long data) 47 { 48 printk("wang wang wang\n"); 49 } 50
时间: 2024-11-05 13:36:56