news 2026/8/8 0:28:01

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/8/7 0:35:24

13、Linux 系统日志处理与服务使用技巧

Linux 系统日志处理与服务使用技巧 1. 日志文件的查找与处理 在 Linux 系统中,日志文件记录了系统几乎所有的活动,对于系统分析和安全检测至关重要。我们可以使用 locate 命令结合通配符来查找特定的日志文件,例如查找 varlog/auth.log 相关的所有日志文件: kali &…

作者头像 李华
网站建设 2026/8/7 11:39:57

Paperzz 论文查重:从 “重复率焦虑” 到 “合规清晰”,学术新人如何用工具搞定论文的 “终稿安检”

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 论文查重https://www.paperzz.cc/check 对学术新人而言&#xff0c;论文的 “重复率超标” 是终稿阶段最棘手的问题 —— 既怕 “标红太多” 导致延期&#xff0c;又怕 “盲目降重” 破坏逻辑。…

作者头像 李华
网站建设 2026/8/7 11:40:10

Bananas屏幕共享:3分钟学会零门槛跨平台协作

还在为远程协作的繁琐配置而头疼吗&#xff1f;&#x1f914; Bananas这款神奇的屏幕共享工具&#xff0c;让你彻底告别复杂的账户注册和服务器设置&#xff01;无论你是技术小白还是资深开发者&#xff0c;都能在3分钟内快速上手&#xff0c;享受流畅的屏幕共享体验。 【免费下…

作者头像 李华
网站建设 2026/8/7 22:11:55

使用二进制文件方式部署kubernetes(1)

使用二进制文件方式部署kubernetes&#xff08;1&#xff09; OS&#xff1a;OpenEuler-24.03 ip规划 规划好master以及worker节点数量&#xff0c;推荐master节点数为奇数 安装必备工具 所有节点执行 dnf -y install wget psmisc vim net-tools nfs-utils telnet device-mapp…

作者头像 李华
网站建设 2026/8/7 22:11:46

如何在Mac上安装KeyCastr:5步搞定按键可视化工具

如何在Mac上安装KeyCastr&#xff1a;5步搞定按键可视化工具 【免费下载链接】keycastr KeyCastr, an open-source keystroke visualizer 项目地址: https://gitcode.com/gh_mirrors/ke/keycastr 想要在屏幕录制或演示时直观展示键盘输入吗&#xff1f;KeyCastr这款开源…

作者头像 李华
网站建设 2026/8/7 22:37:35

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

一、&#x1fa84;✨ 欢迎来到&#xff1a;C 位运算灯泡王国&#xff01; ✨&#x1fa84;在计算机世界里&#xff0c;每个数字都不是直接写成“10”、“25”这样的&#xff0c;而是变成一排亮着或灭着的小灯泡。 这些灯泡就是 比特位&#xff08;bit&#xff09;&#xff01;灯…

作者头像 李华