当前位置: 首页> 科技> 数码 > seo外包网站_找公司开发网站_我赢seo_南宁seo服务公司

seo外包网站_找公司开发网站_我赢seo_南宁seo服务公司

时间:2025/7/8 12:52:32来源:https://blog.csdn.net/qq_42952079/article/details/145035933 浏览次数:1次
seo外包网站_找公司开发网站_我赢seo_南宁seo服务公司

注意事项

如果你的目的是使用工作队列来调度任务,应该使用 queue_work 而不是 tasklet_schedule,并避免混用工作队列和 tasklet。
如果你确实需要使用 tasklet,则需要用 tasklet_struct 替代 work_struct,并使用 tasklet_schedule。

中断上下文-tasklet

int irq;
static struct work_struct power_off_work;
static DECLARE_TASKLET(power_off_work, power_off_func);void power_off_func(struct work_struct *work)
{printk("powerdown detect sync filesystem!\n");//call_usermodehelper("/bin/sync", NULL, NULL, UMH_WAIT_PROC);ksys_sync();printk("powerdown detect reboot system!\n");kernel_power_off();
}// 中断服务函数
irqreturn_t test_interrupt(int irq, void *args)
{// 使用工作队列处理关机操作tasklet_schedule(&power_off_work);return IRQ_RETVAL(IRQ_HANDLED);
}//驱动入口函数
static int interrupt_irq_init(void){int ret;irq = gpio_to_irq(110);		//填写要申请的gpio编号printk("irq is %d\n", irq);ret = request_irq(irq, test_interrupt, IRQF_TRIGGER_FALLING, "test", NULL);		//引脚上升沿触发中断服务函数if(ret < 0){printk("request_irq is error\n");return -1;}return 0;
}//驱动出口函数
static void interrupt_irq_exit(void){free_irq(irq, NULL);printk("bye bye\n");
}module_init(interrupt_irq_init);
module_exit(interrupt_irq_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("YU");

中断上下文-工作队列

int irq;
static struct work_struct power_off_work;
static DECLARE_WORK(power_off_work, power_off_func);void power_off_func(struct work_struct *work)
{printk("powerdown detect sync filesystem!\n");//call_usermodehelper("/bin/sync", NULL, NULL, UMH_WAIT_PROC);ksys_sync();printk("powerdown detect reboot system!\n");kernel_power_off();
}// 中断服务函数
irqreturn_t test_interrupt(int irq, void *args)
{// 使用工作队列处理关机操作schedule_work(&power_off_work);return IRQ_RETVAL(IRQ_HANDLED);
}//驱动入口函数
static int interrupt_irq_init(void){int ret;irq = gpio_to_irq(110);		//填写要申请的gpio编号printk("irq is %d\n", irq);ret = request_irq(irq, test_interrupt, IRQF_TRIGGER_FALLING, "test", NULL);		//引脚上升沿触发中断服务函数if(ret < 0){printk("request_irq is error\n");return -1;}return 0;
}//驱动出口函数
static void interrupt_irq_exit(void){free_irq(irq, NULL);printk("bye bye\n");
}module_init(interrupt_irq_init);
module_exit(interrupt_irq_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("YU");
关键字:seo外包网站_找公司开发网站_我赢seo_南宁seo服务公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: