触发内核中断处理程序:如何?

2024-01-08

enter image description hereI am trying to understand Asynchronous Interrupt handling in kernel, ofcourse through the legendary Understanding the Linux Kernel.

在这个过程中如何以及谁会触发内核中断处理程序?

我希望有人帮助我纠正这个问题并澄清我的问题 1)如何以及由谁触发内核中断处理程序? 2)如何定义新的或更改现有的硬件中断处理程序?

先感谢您!


Interrupt handling This picture from Robert Love's "Linux Kernel Development" pretty well describes path of interrupt. Processor interrupts the kernel in the predefined enty point do_IRQ(). If there is corresponding interrupt handler, it will get executed.

要处理中断,您应该注册您的中断处理程序request_irq().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

触发内核中断处理程序:如何? 的相关文章

  • 调试 Android 内核:启动时向 Android 内核传递参数

    我正在尝试让 kgdb 与 Android 内核一起使用http bootloader wikidot com android kgdb http bootloader wikidot com android kgdb 我陷入了以下步骤 C
  • 如何编写 Linux .dts 设备树文件?

    我要在我的开发板上启动Linux 我需要一个dts文件 设备树文件 来描述整个硬件 但我对这个文件的语法知之甚少 不足以在板上正确运行Linux 我现在所知道的只是如何描述一个单元的中断号 频率 地址 父单元及其兼容的驱动程序类型 如下所述
  • 在linux中找不到syscall_table_32.S文件

    我正在使用linux headers 2 6 32 21虚拟机上的包 我要编写一个新的系统调用 我找到了其他文件来写入系统调用的缩写 但我找不到这个syscall table 32 S in arch x86 kernel 目录 请帮助我如
  • Linux内核中断处理程序互斥保护?

    我是否需要保护我的中断处理程序被同一中断多次调用 鉴于以下代码 我不确定应该进行的系统调用 我在当前的实现中遇到了罕见的随机死锁 void interrupt handler void down interruptible sem or u
  • 如何识别用户空间和内核空间之间的特定套接字?

    我在用户空间中有一个库 可以拦截套接字层调用 例如socket connect accept 等等 我只处理 TCP 套接字 在内核空间中 我有一个网络内核模块 它处理所有 TCP 连接 我需要能够在驱动程序中识别哪些套接字被用户空间库拦截
  • simple_read_from_buffer/simple_write_to_buffer 与 copy_to_user/copy_from_user

    我最近编写了一个实现这些功能的模块 两者有什么区别 据我了解 copy user功能更加安全 如果我错了 请纠正我 此外 将这两个功能混合在一个程序中是不是一个坏主意 例如 我用过simple read from buffer在我的杂项开发
  • 如何通过设备树配置 uio_dmem_genirq 驱动程序

    The uio dmem genirq https git kernel org pub scm linux kernel git stable linux stable git tree drivers uio uio dmem geni
  • 环形缓冲区和 DMA

    我试图了解从数据包到达网卡到目标应用程序收到数据包之间发生的所有事情 假设 缓冲区足够大 可以容纳整个数据包 我知道情况并非总是如此 但我不想介绍太多技术细节 一种选择是 1 Packet reaches the NIC 2 Interru
  • 来自task_struct的完整进程名称

    我想从中获取完整的进程名称struct task struct The comm字段仅存储 16 个字符 而进程名称可以更长 有没有办法获得完整的进程名称 这可以通过获取来完成struct vm area struct from task
  • 使用 gdb 在指定的可执行文件之外单步执行汇编代码会导致错误“无法找到当前函数的边界”

    我在 gdb 的目标可执行文件之外 甚至没有与该目标对应的堆栈 无论如何 我想单步执行 以便我可以验证汇编代码中发生了什么 因为我不是 x86 汇编方面的专家 不幸的是 gdb 拒绝进行这种简单的汇编级调试 它允许我设置并停止在适当的断点上
  • Linux 如何在 x86-64 中支持超过 512GB 的虚拟地址范围?

    Linux 中 x86 64 的用户虚拟地址空间为 47 位长 这本质上意味着 Linux 可以映射大约 128 TB 虚拟地址范围的进程 然而 令我困惑的是 x86 64 架构支持 ISA 为每个进程定义的 4 级分层页表 排列为基数树
  • 物理地址、设备地址和虚拟地址的区别

    有什么区别设备地址 实际地址 and 虚拟地址 其实我正在努力mmap在驱动程序中 我一直坚持这个概念 The 文档 https www kernel org doc Documentation DMA API HOWTO txt says
  • ARM Cortex A8 PMNC 读取在启用后也给出 0.. 有什么想法/建议吗?

    MODULE LICENSE GPL MODULE DESCRIPTION user mode access to performance registers int init arm init void unsigned int valu
  • 如何杀死内核模块中的等待队列?

    我是内核模块的新手 使用等待队列 我阻塞线程 直到缓冲区有数据 使用hrtimer 我定期唤醒队列 现在 问题是即使在我删除内核模块之后 我也可以看到该进程 thread1 仍在运行 我认为问题在于等待队列永远等待并且进程在这里被阻塞 请帮
  • Linux Slab 分配器和缓存性能

    来自指南理解Linux内核第三版 第 8 2 10 章 板坯着色 从第 2 章我们知道 同一个硬件缓存行映射许多不同的 RAM 块 在这个 在本章中 我们还看到相同大小的对象最终存储在缓存中的相同偏移量处 不同板内具有相同偏移量的对象将以相
  • Linux 内核:为什么调用 kstrtol 会崩溃?

    我正在学习内核编程 并且对 kstrtol 进行了简单的调用 我用它来将字符串转换为数字 然而 每次我编译这个模块并使用 insmod 将其放入内核时 我都会收到 BUG 无法处理 f862b026 处的内核分页请求 然后是寄存器和堆栈转储
  • 如何从内核空间读取/写入 linux /proc 文件?

    我正在编写一个由用户程序和内核模块组成的程序 内核模块需要收集数据 然后将其 发送 到用户程序 这必须通过 proc 文件来完成 现在 我创建了文件 一切都很好 并且花了很长时间在互联网上寻找答案 但仍然找不到 如何读 写 proc 文件f
  • 对内核模块代码进行单元测试是否可行?

    如果是这样我应该使用什么技术 我正在考虑使用 hippomock 因为它们可以用来模拟 C 方法 还有更好的方法吗 如果是这样 任何人都可以提供建议 或者您认为内核的单元测试是否太过分了 从 Linux 内核版本 5 5 开始KUnit可用
  • 在 Mac OS X 中创建虚拟 USB 设备

    我尝试以编程方式在 Mac OS 中添加带有驱动程序的虚拟 USB 设备 IOKit 文档说 传统上 虚拟设备的驱动程序在 IOResources 上匹配 因为虚拟设备不发布自己的 nub 此类驱动程序的另一个示例是 HelloIOKit
  • 套接字对和一对无名管道有什么区别吗?

    我不仅想知道用户端的差异 还想知道 Linux 内核实现中的差异 共同部分 管道是单向的 因此需要两个管道才能进行双向通信 而套接字对是双向的 管道始终是面向流的 而套接字对可以是面向数据报的 套接字对正常AF UNIX套接字 这意味着辅助

随机推荐

  • IValidatableObject 对于 EF 导航属性没有用?

    仅当实现实体 DbEntityEntry State 不同于 Unchanged 时 才会调用 IValidatableObject Validate 仅更改导航属性不会更改状态 因此永远不会发生验证 为什么微软总是发布半生不熟的测试版东西
  • 多媒体内容的处理程序 (MIME) 不起作用

    我正在与一个在页面中呈现多媒体内容的处理程序合作 这个想法是 该处理程序访问文件并使用扩展名确定类型 然后将其呈现problem是大多数时候处理程序本身被下载并且不提供多媒体 这是代码 FileInfo file new FileInfo
  • 如何更改树莓派的屏幕分辨率[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Raspberry pi 上使用 7 TFT LCD 显示屏 谁能告诉我如何更改 Raspberry Pi 的屏幕分辨率以及 7 T
  • 在 CXF JAX-WS 单向方法调用中获取客户端 IP 地址的可靠方法

    我使用以下代码来获取 JAX WS 单向方法调用的客户端 IP 地址 protected HttpServletRequest getServletRequest MessageContext ctx wsContext getMessag
  • AttributeError:“dict”对象没有属性“drop_duplicates”

    运行此代码时 我收到 AttributeError dict object has no attribute drop duplicates 有什么想法如何解决这个问题吗 第一个模块接口 py import tkinter as tk fr
  • Tkinter - 如何改进“grab_set()”方法行为?

    我编写了一个简单的代码 其中有一个带有两个按钮的主窗口 第一个打开一个新窗口 第二个打开一个消息框 当我打开消息框窗口时 我无法以任何方式与主窗口进行文字交互 如果我单击它 系统铃声会响起并且消息框会闪烁 我想在另一个窗口复制相同的行为 但
  • 在英国的 iPhone 上查看时,从 SSRS 呈现的 Excel 丢失货币符号

    我们的报告动态地格式化货币 因此 在结果集中有一列名为CurrencyFormatString 这通过 FORMAT FieldName CurrencyFormatString 应用于适当的字段 一切似乎都工作正常 直到将报告呈现为 Ex
  • 对矩阵列表求和[重复]

    这个问题在这里已经有答案了 我有一个列表 其中每个元素都是 5 5 矩阵 例如 1 V1 V2 V3 V4 V5 1 0 000000 46 973700 21 453500 338 547000 10 401600 2 43 020500
  • 从谷歌地图 api json 获取 formatted_address

    我想从 json 数组中获取 formatted adress 一个示例链接可以是http maps googleapis com maps api geocode json latlng 55 397563 http maps googl
  • OS X 10.9 Beta 6 上禁用 Eclipse 菜单

    今天我像往常一样打开了日食 但我无法做任何事情 除首选项外的所有菜单均呈灰色 禁用 我使用的是 Mac Mavericks Beta 6 和 Eclipse Kepler 你有什么提示给我吗 重启Eclipse或者整个mac都没有解决问题
  • 用于 beta 测试的 Ad Hoc 发行版 xcode 4.3

    遵循来自的精彩教程后http www raywenderlich com http www raywenderlich com 关于如何将您的应用程序提交到应用程序商店 我从一开始就开始计划我的 Beta 测试计划 我不会详细介绍一切顺利的
  • 模板不会推断 C++ 中零长度数组的大小

    假设我有一个模板函数 它可以推断数组参数的长度 template
  • 当应用程序安装在 SD 卡上时,BroadcastReceiver 不工作

    我正在创建一个 EventsManager 应用程序 其中有一个 BroadcastReciver 它执行 BOOT COMPLETED 广播 此接收器已用于使用 AlarmManager 重新注册所有事件 如果该应用程序安装在手机内存上
  • 对多个 github 项目使用相同的部署密钥

    Github 不允许同一个 ssh 部署密钥用于多个项目 这在某些情况下非常有用 例如 CI 服务器处理具有私有子模块的项目 我已经看到各种线程似乎都说这种限制是出于 安全原因 而存在 但我还没有看到关于这到底会带来什么风险的令人信服的解释
  • 线程(在 Java 或 C++ 程序中)与 CPU 核心数之间有什么关系?

    有人可以解释一下吗 i7 处理器可以运行 8 个线程 但我很确定我们可以在 JAVA 或 C 程序中创建超过 8 个线程 但不确定 我有一个 i5 处理器 在研究并发性时我创建了 10 个线程用于分配 我只是想了解 CPU 的核心评级与线程
  • 在cocoa中读取、修改、写入xml文件

    我正在寻找一个关于如何使用 cocoa 读取 修改一个值和编写 xml 文件的简短示例 教程 我发现的一切都是simple https stackoverflow com questions 5274513 cocoa obj c simp
  • timeit.timeit 方法的装饰器?

    我正在尝试编写一个简单的时间装饰器来测量函数所花费的时间 然而 下面的代码给出了我们的递归错误 它出什么问题了 import timeit def measure func def wrapper func name func name s
  • MATLAB 查找函数并将其应用于重复索引的值

    我有一个 352x11 矩阵 按第 1 列索引 有 10 个数据点 一些索引值是重复的 我想找到重复的索引并计算重复试验的平均数据点 如果可能 避免循环 例如 x 26 77 5700 17 9735 32 7200 27 40 5887
  • Android:将 Parcelable 转换为 JSON

    我正在使用 socket io 库 它向 socket io 服务器发送消息 服务器需要 JSON 对象 数组等 我最初的实现使用 JSONOject 和 JSONArray 数据类型 但是 我想切换到使用通过生成的类Parceler ht
  • 触发内核中断处理程序:如何?

    I am trying to understand Asynchronous Interrupt handling in kernel ofcourse through the legendary Understanding the Lin