问题标签 [irq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 访问模块内的 IRQ 描述数组并显示动作名称
我正在用 C 编写一个内核模块,该模块正在努力访问 IRQ 描述数组元素并显示这些元素的所有操作名称。
一开始,我认为这个 irq_desc 数组有点像宏,但编译后我明白它不是。然后我使用了 for_each_irq_desc(irq, desc) 函数。但这次它返回了一个警告:
警告:“irq_to_desc”[/home/samet/Masaüstü/Assignment3/Ass-1.ko] 未定义!
在此警告之后,我尝试将模块安装到内核中,这次弹出错误消息:
insmod:插入'./Ass-1.ko'时出错:模块中的-1未知符号
在此之后,我包含了我认为与此过程相关的所有头文件,但没有任何改变。
因为它很短,所以我附上代码:
usb - linux上的虚拟串行端口(如ttyUSB0)是否有IRQ?
我正在从 Linux 下的虚拟串口读取数据(连接的设备是 xbee 模块)
目前,读取是通过检查端口缓冲区的线程完成的。但是在很多设备的情况下,这并不好,因为一个端口上的数据可能每毫秒出现一次,另一个端口每秒出现一次,因此它成为 CPU 的负担。
我想知道是否有类似中断的东西,只有在新数据可用时才会触发事件(我知道这个主体适用于微控制器)。
如何在 C++ 中做到这一点?
我不知道如何使用这些信息,因为我缺乏知识。如果我有这样的事情:
我想删除while循环。我在哪里以及如何使用 epoll_wait?
clock - CPU不调用IRQ0?
我正在编写一个操作系统并尝试使用 PIT。我编写了一个处理程序,并为 IRQ0(中断 32)编写了一个 ISR 条目。处理程序根本没有被调用。我很确定我没有正确输入 ISR。有什么建议么?这是我的 ASM 代码
我初始化 PIT 的代码是
处理程序是
哪个被称为
assembly - x86 清除 IRQ 掩码挂起操作系统
我正在开发一个操作系统,我正在尝试让一个 PIC 计时器工作。它是一个在保护模式下运行的 32 位操作系统。这段代码挂起操作系统,(我不知道为什么,这就是我想要找出的)。我正在清除 IRQ0 掩码。这段代码有什么问题,还是 IDT 或 PIC 有问题?此外,我有几个软件中断处理程序工作得很好,所以我认为它与 IDT 无关。
assembly - 如何从 x86 中的中断处理程序中获取中断号?
在 x86 上以保护模式触发中断时,是否可以确定触发的中断号是多少?例如,假设我调用了 int 0xFF。在处理程序中,我可以发现调用了 int 0xFF 吗?
affinity - irq smp_affinity 可以替代 rps(接收包转向)吗?
我有一个网卡 eth0,它有一个单队列,它的 IRQ 号是 63,</p>
我的问题是:</p>
如果我将 /proc/irq/63/smp_affinity 设置为 fffff
是否意味着Linux内核会将eth0的IRQ分配给我系统中的每个cpu?
它的功能和rps(receive package serving)一样吗?</p>
assembly - DCD 指令和 IRQ 堆栈
我正在研究为 ARM 处理器的不同模式(IRQ、主管、用户......)设置堆栈的主题。由于设置不同的堆栈需要相同的指令序列(基本上只有堆栈地址更改),我将求助于设置 IRQ 堆栈的问题来问我的问题。前提是我有以下定义:
以下代码用于设置堆栈(我添加行号以启用注释):
第1行只是r2
为了禁用中断和在第2行进入 IRQ 模式而加载,方法是将值加载到CPSR_c
. 然后,在第3行,LDR
用于将IRQ_NewStack
标签的(32 位)地址加载到以 IRQ 模式存储的堆栈指针中。
你能解释一下第7行指令的目的是什么吗?
我阅读了DCD
用于“保留 32 位字”的 ARM 手册。当我阅读"reserve a 32 bit word"时,我认为这就像为单个 32 位变量保留空间,这意味着DCD
充当EQU
(可能EQU
只是DCD
...的宏)。但是,如果是这种情况,我为什么要为整个堆栈保留一个 32 位字,它可以比一个 32 位字大?
谢谢。
c - Linux 中的软中断与硬中断处理时序
我正在将一些软件从使用物理硬件设备转换为完整的软件模拟,现在我正在研究中断处理部分。
当此代码驱动物理硬件时,它通过 请求 IRQ request_irq()
,现在我不再拥有物理设备,我将更改代码以使用“softirq”方法。
一个令人担忧的问题是,我看到软中断实际上只是必须等到调度程序调用它的事件。而硬件中断会导致正在运行的活动立即中断。这对我来说意味着,通过将我的代码转换为使用 softirqs 将导致原始代码中不存在的调度延迟。
我的理解正确吗?
无论如何我可以注册我的softirq以立即中断,就像硬件中断一样?
如果没有的话,无论如何要选择一个免费的硬件中断号并继续使用request_irq()
并“欺骗”它以为我正在运行一个硬件设备?
interrupt - request_irq 成功。处理程序未调用
我正在为 BeagleBoard-xM Rev C 上的用户按钮编写一个模块。现在,我只是想在调用中断处理程序时(即按下用户按钮时)打印一条消息。
用户按钮对应于 GPIO 引脚 4。我正在执行 gpio_to_irq(4) 以获取我通过处理程序传递给 request_irq() 的 IRQ 编号,这是成功的。事实上,这是我的 request_irq 调用。
我的中断处理程序看起来像这样。
但是当按钮被按下时,中断处理程序永远不会被调用。关于如何调试的任何指示?
谢谢!