news 2026/1/21 7:02:02

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/1/19 13:15:19

12、Linux设备管理与日志系统全解析

Linux设备管理与日志系统全解析 1. 块设备概述 在Linux系统中, b 代表块设备(block devices)。块设备以数据块(一次处理多个字节)的方式进行通信,像硬盘驱动器和DVD驱动器都属于块设备。这些设备需要高速的数据吞吐量,所以以块为单位发送和接收数据。 2. 使用 lsb…

作者头像 李华
网站建设 2026/1/16 5:57:20

GEO系统赋能跨境品牌:多区域市场渗透与国际搜索认知构建策略

一、跨境品牌全球化布局的核心挑战在当前全球化电商环境中&#xff0c;跨境品牌面临多重挑战&#xff1a;区域市场差异性导致的本地化适应难题国际搜索引擎算法差异与用户搜索习惯差异品牌认知从零到一的建设成本高昂多语言、多文化背景下的内容营销策略制定困难二、GEO系统&am…

作者头像 李华
网站建设 2025/12/24 19:16:11

在应用中心的业务组件导入组件,但是在IDE里面看不到导入的组件。

问题描述: 在应用中心的业务组件导入组件&#xff0c;但是在IDE里面看不到导入的组件。 解决方案: 在系统变量-BUSINESS_COMPONENT_CENTER_URL中将内容置空&#xff1b; 置空后会走本地导入的市场组件&#xff0c;在低开中进行市场导入即可看到应用中心导入的业务组件&…

作者头像 李华
网站建设 2026/1/5 8:08:43

基于微信小程序的社区活动报名系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于微信小程序的社区活动报名系统&#xff0c;以满足社区成员对于活动报名的便捷性和高效性需求。具体而言&#xff0c;研究目的可…

作者头像 李华
网站建设 2025/12/24 19:52:51

快速上手!查看、拷贝、编辑、远程连接Linux命令

目录 1. 远程连接Linux 2. ‌文件与目录操作‌ 3. ‌文件内容查看‌ 4. ‌系统信息‌ 5. ‌网络操作‌ 6. ‌用户管理‌ 7. ‌包管理‌ 8. ‌文本处理‌ 9. ‌系统管理‌ 10. 远程电脑复制文件给Linux 11. Linux复制文件给远程电脑 12. 编辑文件 13. iv编辑器操作指…

作者头像 李华
网站建设 2025/12/22 12:55:32

一文搞懂Python匿名函数

什么是python函数&#xff1f;学过python的小伙伴会知道&#xff0c;在python中用【def 函数名参数】的方式定义函数&#xff0c;即&#xff1a;>>> def function_name(parameters): ...这样的函数拥有函数名&#xff0c;调用函数只需要&#xff1a;>>&…

作者头像 李华