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

编译及实验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1004069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU-Z TV版:轻量级硬件检测工具,完美支持电视遥控操作

在智能电视和机顶盒的使用过程中&#xff0c;了解设备硬件信息对于性能优化和故障排查非常重要。CPU-Z TV版作为一款专门为电视设备优化的硬件检测工具&#xff0c;虽然检测信息不如AIDA64全面&#xff0c;但其轻量级的特点和良好的遥控支持使其成为电视端硬件检测的实用选择。…

3、Kali Linux入门指南:基础操作与命令详解

Kali Linux入门指南:基础操作与命令详解 1. 启动与登录Kali 启动Kali后,会看到登录界面。使用root账户(用户名:root,默认密码:toor)进行登录。登录成功后,你将进入Kali桌面。 2. 终端与文件系统基础 2.1 终端操作 使用Kali的第一步是打开终端,它是命令行界面。在K…

大蜂智能科技携手拯救HMI:重新定义气调包装设备的智能交互体验

走进任何一家超市的生鲜区&#xff0c;你都能看到它的身影&#xff1a;那些覆盖着保鲜膜的冷鲜肉托盘、抽真空的三文鱼块、充入混合保鲜气体的沙拉菜盒&#xff0c;以及份量精准的冷冻虾仁袋——所有这些锁住“鲜度”的包装&#xff0c;都离不开气调包装设备这条“高速保鲜流水…

当查重报告成为学术通关的“终极审判”,Paperzz 的论文查重功能是如何把“红字警报”变成“优化指南”的——一位被AI率反复狙击的科研新手的认知升级实录

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 论文查重https://www.paperzz.cc/check 引子&#xff1a;在查重报告的红色海洋里&#xff0c;我点开了那个橙色按钮 凌晨三点&#xff0c;导师的批注邮件像一盆冰水浇在我头上&#xff1a; “重…

BG3模组管理器终极指南:5分钟快速上手博德之门3模组管理

BG3模组管理器终极指南&#xff1a;5分钟快速上手博德之门3模组管理 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 想要在《博德之门3》中体验更多精彩内容&#xff1f;BG3模组管理器就…

青少年编程考级有必要吗?从价值与误区看真实意义

青少年编程考级有必要吗&#xff1f;从价值与误区看真实意义学习路径的三个层次从专业角度看&#xff0c;青少年编程学习与考级可分为三个主要阶段&#xff1a;兴趣启蒙、系统进阶、以及综合实践与竞赛升学导向。考级的核心价值编程考级并非学习的“必选项”&#xff0c;而是能…

4、Linux 文件与目录操作及文本处理指南

Linux 文件与目录操作及文本处理指南 1. 文件与目录的基本操作 在 Linux 系统中,当你找到所需的文件和目录后,就需要对它们执行各种操作,如创建、复制、重命名和删除等。 1.1 创建文件 在 Linux 中有多种创建文件的方法,这里介绍两种简单的方式。 - 使用 cat 命令 :…

CrystalFetch:Mac用户的Windows 11镜像制作终极指南

CrystalFetch&#xff1a;Mac用户的Windows 11镜像制作终极指南 【免费下载链接】CrystalFetch macOS UI for creating Windows installer ISO from UUPDump 项目地址: https://gitcode.com/gh_mirrors/cr/CrystalFetch 在当今多平台协作的时代&#xff0c;Mac用户经常需…

JetBrains Maple Mono编程字体终极指南

JetBrains Maple Mono编程字体终极指南 【免费下载链接】Fusion-JetBrainsMapleMono JetBrains Maple Mono: The free and open-source font fused with JetBrains Mono & Maple Mono 项目地址: https://gitcode.com/gh_mirrors/fu/Fusion-JetBrainsMapleMono JetBr…

2025实践指南:5天掌握大模型应用开发全流程

还在为复杂的AI开发流程感到困惑&#xff1f;想要快速搭建属于自己的智能应用却不知从何入手&#xff1f;这份实践指南将带你用5天时间&#xff0c;从零开始掌握大模型应用开发的核心技能&#xff0c;无需专业背景&#xff0c;跟随我们的step-by-step教程&#xff0c;轻松构建企…

专精前端平台 vs. 全能应用平

再见了&#xff0c;Vercel VPS 的割裂部署&#xff1a;这套云原生开发工作流&#xff0c;让我扔掉了本地环境我曾是 Vercel 的铁杆粉丝&#xff0c;代码一推&#xff0c;网站全球上线&#xff0c;那种极致丝滑的体验&#xff0c;让我一度以为自己窥见了未来开发的终极形态。我…

2026最新!华为认证超全解析,HCIA、HCIP、HCIE一篇说全!

咱说实话哈&#xff0c;想在IT行业稳稳当当站住脚&#xff0c;光靠那股子热情和冲劲可不行&#xff0c;还得有过硬的技术和资历才行。 华为认证&#xff0c;在业内那可是公认的“技术通行证”&#xff0c;好多人就靠着它才敲开了职场的大门。你去看看就知道&#xff0c;现在越来…

SDXL VAE FP16修复版完全指南:从数值稳定性到高效推理

SDXL VAE FP16修复版完全指南&#xff1a;从数值稳定性到高效推理 【免费下载链接】sdxl-vae-fp16-fix 项目地址: https://ai.gitcode.com/hf_mirrors/madebyollin/sdxl-vae-fp16-fix SDXL-VAE-FP16-Fix是一个专门针对Stable Diffusion XL模型变分自编码器的FP16精度修…

50、Linux 技术全解析:从基础到实战

Linux 技术全解析:从基础到实战 一、CD - ROM 软件类型及故障排除 (一)软件类型 免费软件(Freeware) 免费软件是受版权保护的免费游戏、应用程序和实用工具。你可以将它们复制到任意数量的个人电脑上,但这些软件没有技术支持。 GNU 软件 GNU 软件受其自身许可证的…

计算机毕业设计springboot药店管理系统 基于SpringBoot的药品零售信息管理平台 SpringBoot驱动的智慧药房综合运营系统

计算机毕业设计springboot药店管理系统04t639km &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。传统药店每天需要处理大量药品的流转、库存、销售与顾客服务&#xff0c;人工台账…

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

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

拯救HMI | 又放大招!分切机源程序免费领!

听说拯救HMI又要搞事情&#xff1f;没错&#xff01;这次是人机界面源程序免费领&#xff01;这次不搞复杂套路&#xff0c;直接送干货 —— 人机界面源程序&#xff0c;免费领&#xff01;相信大多数的自动化工程师都在被同一个问题困扰——触摸屏界面怎么才能做得好看又好用&…

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

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

突然发布!GPT-5.2深夜来袭,3个版本碾压人类专家,打工人该怎么选?

GPT5.2来了&#xff0c;三级模型矩阵精准戳中不同用户痛点。&#xff08;图片源自网络&#xff0c;侵删&#xff09;没有发布会&#xff0c;没有预热海报&#xff0c;12月12日凌晨&#xff0c;OpenAI突然扔出重磅炸弹——GPT-5.2系列模型低调上线&#xff0c;仅用一篇技术博客和…