当前位置: 首页 > news >正文

linux内核 - request_irq 介绍

一:概述

GPU在执行任务时,本质上是一个异步设备,由CPU提交任务,GPU执行,那么GPU完成任务后,CPU怎么知道?答案是GPU触发 IRQ,让CPU收到中端信号。

另外有一个核心问题是,硬件中断只能进入内核态,不能直接进入用户态或普通程序,那么如何将IRQ注册到内核呢? 答案就是用 request_irq 。

Linux 内核内部维护了一个映射表, IRQ 号 以及对应中断处理函数。当我们调用 request_irq时,本质是把中断处理函数注册到 IRQ 表中。

接下来当中断发生时,GPU触发 IRQ, CPU进入内核中断处理,内核查找IRQ表,找到对应的中断处理函数,调用并执行中断处理函数。

二:示例

#include <linux/module.h> #include <linux/interrupt.h> #include <linux/kernel.h> #define MY_IRQ 42 // 示例 IRQ(实际从设备获取) static irqreturn_t my_isr(int irq, void *dev_id) { printk(KERN_INFO "IRQ %d triggered!\n", irq); /* 判断是否是自己设备的中断(共享中断必须做) */ // if (!my_device_irq_status()) // return IRQ_NONE; /* 清中断(非常关键) */ // clear_my_device_irq(); return IRQ_HANDLED; } static int __init my_init(void) { int ret; printk(KERN_INFO "Registering IRQ...\n"); ret = request_irq( MY_IRQ, // IRQ号 my_isr, // 中断处理函数 IRQF_SHARED, // 标志(共享中断) "my_irq_device", // 名字(/proc/interrupts 可见) (void *)&my_isr // dev_id(用于区分设备) ); if (ret) { printk(KERN_ERR "request_irq failed\n"); return ret; } return 0; } static void __exit my_exit(void) { printk(KERN_INFO "Free IRQ...\n"); free_irq(MY_IRQ, (void *)&my_isr); } module_init(my_init); module_exit(my_exit); MODULE_LICENSE("GPL");

备注:多个设备共用同一个 IRQ 号的中断机制,就叫“共享中断(Shared IRQ)”

http://www.jsqmd.com/news/617153/

相关文章:

  • 3分钟搞定!让GitHub界面说中文的终极指南
  • 2026酒店设计公司推荐及行业服务解析 - 品牌排行榜
  • Escrcpy手机投屏:解决安卓手机投屏到电脑的常见问题与实用指南
  • Kimi-VL-A3B-Thinking快速上手:免配置镜像+Chainlit前端调用全流程
  • 反思设计模式:让 LLM 通过自我批判迭代出更优结果
  • 快速上手LongCat动物百变秀:从安装到出图完整流程
  • 2026关务咨询公司哪家好?行业资深机构推荐 - 品牌排行榜
  • 轻量级SaaS租赁系统
  • 2026年酒店设计公司推荐:专业服务团队选择指南 - 品牌排行榜
  • 为啥学C语言绕不开指针?懂它封神,不懂直接劝退,真相太扎心
  • 终极指南:如何快速重置JetBrains IDE试用期 - ide-eval-resetter完全教程
  • 3分钟配置Zotero-GPT:让AI成为你的专属文献研究助手
  • 哪些降重软件可以同时降低查重率和AIGC疑似率?硕博请进
  • 单商户SaaS和多商户SaaS区别
  • 2026海关事务咨询服务哪家专业?行业机构实力解析 - 品牌排行榜
  • G-Helper:华硕笔记本轻量化控制解决方案详解
  • 2026年靠谱的报关公司推荐及选择指南 - 品牌排行榜
  • 终极指南:如何安装ViGEMBus虚拟手柄驱动提升Windows游戏体验
  • OpenClaw极简部署:Kimi-VL-A3B-Thinking云端镜像10分钟快速体验
  • 终极罗技鼠标宏指南:5分钟掌握PUBG压枪脚本配置
  • Lychee Rerank MM镜像实战:基于Docker的多模态重排序服务容器化部署指南
  • 2026年酒店翻新公司推荐:行业服务与案例解析 - 品牌排行榜
  • 2026年进出口报关公司哪家靠谱?行业口碑机构推荐 - 品牌排行榜
  • 如何快速掌握macOS微信消息保护:终极防撤回解决方案
  • Cesium驱动的智慧城市三维数据可视化大屏系统源码
  • 如何免费解锁Windows多用户远程桌面:RDP Wrapper完整配置指南
  • 如何快速解决ComfyUI-Manager中SVD模型加载失败的完整指南
  • 太原市尖草坪区致尚家具维修服务部:太原尖草坪区性价比高的沙发翻新公司电话 - LYL仔仔
  • 终极指南:如何使用DriverStore Explorer轻松清理Windows冗余驱动,释放宝贵磁盘空间!
  • 百度网盘高速下载终极指南:告别龟速下载的完整解决方案