news 2026/4/16 10:36:42

51.自定义工作队列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
51.自定义工作队列

相比于传统工作队列可控性强。

驱动编写

#include <linux/module.h> #include <linux/init.h> #include <linux/interrupt.h> #include <linux/gpio.h> #include <linux/delay.h> #include <linux/workqueue.h> int irq; struct workqueue_struct *test_workqueue; struct work_struct test_workqueue_work; // 工作项处理函数 void test_work(struct work_struct *work) { msleep(1000); printk("This is test_work\n"); } // 中断处理函数 irqreturn_t test_interrupt(int irq, void *args) { printk("This is test_interrupt\n"); queue_work(test_workqueue, &test_workqueue_work); // 提交工作项到工作队列 return IRQ_RETVAL(IRQ_HANDLED); } static int interrupt_irq_init(void) { int ret; irq = gpio_to_irq(101); // 将GPIO映射为中断号 printk("irq is %d\n", irq); // 请求中断 ret = request_irq(irq, test_interrupt, IRQF_TRIGGER_RISING, "test", NULL); if (ret < 0) { printk("request_irq is error\n"); return -1; } test_workqueue = create_workqueue("test_workqueue"); // 创建工作队列 INIT_WORK(&test_workqueue_work, test_work); // 初始化工作项 return 0; } static void interrupt_irq_exit(void) { free_irq(irq, NULL); // 释放中断 cancel_work_sync(&test_workqueue_work); // 取消工作项 flush_workqueue(test_workqueue); // 刷新工作队列 destroy_workqueue(test_workqueue); // 销毁工作队列 printk("bye bye\n"); } module_init(interrupt_irq_init); module_exit(interrupt_irq_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("quan");

Makefile

obj-m += custom_workqueue.o KDIR:=/home/linux/samba-mount/linux-kernel/linux-6.17.5 PWD?=$(shell pwd) all: make -C $(KDIR) M=$(PWD) modules echo $(PWD) clean: rm -rf *.ko *.o *.mod *.mod.o *.mod.c *.symvers *.order install: cp *.ko ../../linux-kernel/linux-6.17.5/kmodules

编译及实验

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:39:08

ZLMediaKit终极指南:构建高性能流媒体服务的完整解决方案

ZLMediaKit终极指南&#xff1a;构建高性能流媒体服务的完整解决方案 【免费下载链接】ZLMediaKit 基于C11的WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT服务器和客户端框架。 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/4/16 12:23:11

mid360激光雷达轻量化改造在无人机桥梁巡检中的应用

基于桥梁巡检无人机使用者的需求,我们对Livox Mid-360做了减重改造,使其重量量从265克降到145克, 作为一款 145g 的轻量化混合固态激光雷达,具备 360 全向视场角、抗干扰性强、环境适应性好等优势。对其进行适配性改造后,能很好地解决无人机桥梁巡检中载重与续航矛盾、复杂…

作者头像 李华
网站建设 2026/4/16 14:00:09

如何快速搭建AI编程团队:ChatDev完整使用指南

如何快速搭建AI编程团队&#xff1a;ChatDev完整使用指南 【免费下载链接】ChatDev 该项目利用由大型语言模型&#xff08;LLM&#xff09;驱动的多智能体协作技术&#xff0c;以自然语言概念为输入&#xff0c;实现定制化软件的开发过程。 项目地址: https://gitcode.com/Gi…

作者头像 李华
网站建设 2026/4/11 21:50:15

小学生学C++编程 (运算符精讲)

一、《C 运算符魔法学校》开课啦&#xff01;同学们&#xff0c;欢迎来到 C 运算符魔法学校&#xff01; 在这里&#xff0c;运算符都是一根根神奇的“魔法棒”&#xff0c;挥一下&#xff0c;它们就能让数字发生变化&#xff01;今天我们要认识其中的几大类魔法棒&#xff1a;…

作者头像 李华
网站建设 2026/4/16 12:28:17

青春成长题材电影《鱼刺》定档12月24日全国上映 心落柔刺,暖亦相逢

由张旭煜编剧、导演&#xff0c;黄婧仪、柴烨、陈佳宁、黄渲文主演&#xff0c;王一楠、陈创特别出演&#xff0c;王宏伟友情出演的青春成长题材电影《鱼刺》定档于12月24日全国上映。影片聚焦少女李琪在高考失利后的心理困境&#xff0c;通过摔坏手机事件引发的道德抉择&#…

作者头像 李华
网站建设 2026/4/15 22:53:56

OWASP Juice Shop 安装教程【Windows】

访问官网 https://github.com/juice-shop/juice-shop/releases 我的【Node.js】版本是20&#xff0c;所以我选择这个 【darwin】对应的是苹果系统 解压&#xff0c;然后进入解压后的文件夹 打开cmd&#xff0c;运行 npm start 访问 http://localhost:3000

作者头像 李华