问题标签 [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.

0 投票
1 回答
1057 浏览

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未知符号

在此之后,我包含了我认为与此过程相关的所有头文件,但没有任何改变。

因为它很短,所以我附上代码:

0 投票
1 回答
910 浏览

usb - linux上的虚拟串行端口(如ttyUSB0)是否有IRQ?

我正在从 Linux 下的虚拟串口读取数据(连接的设备是 xbee 模块)

目前,读取是通过检查端口缓冲区的线程完成的。但是在很多设备的情况下,这并不好,因为一个端口上的数据可能每毫秒出现一次,另一个端口每秒出现一次,因此它成为 CPU 的负担。

我想知道是否有类似中断的东西,只有在新数据可用时才会触发事件(我知道这个主体适用于微控制器)。

如何在 C++ 中做到这一点?

我不知道如何使用这些信息,因为我缺乏知识。如果我有这样的事情:

我想删除while循环。我在哪里以及如何使用 epoll_wait?

0 投票
1 回答
444 浏览

clock - CPU不调用IRQ0?

我正在编写一个操作系统并尝试使用 PIT。我编写了一个处理程序,并为 IRQ0(中断 32)编写了一个 ISR 条目。处理程序根本没有被调用。我很确定我没有正确输入 ISR。有什么建议么?这是我的 ASM 代码

我初始化 PIT 的代码是

处理程序是

哪个被称为

0 投票
1 回答
283 浏览

assembly - x86 清除 IRQ 掩码挂起操作系统

我正在开发一个操作系统,我正在尝试让一个 PIC 计时器工作。它是一个在保护模式下运行的 32 位操作系统。这段代码挂起操作系统,(我不知道为什么,这就是我想要找出的)。我正在清除 IRQ0 掩码。这段代码有什么问题,还是 IDT 或 PIC 有问题?此外,我有几个软件中断处理程序工作得很好,所以我认为它与 IDT 无关。

0 投票
3 回答
2367 浏览

assembly - 如何从 x86 中的中断处理程序中获取中断号?

在 x86 上以保护模式触发中断时,是否可以确定触发的中断号是多少?例如,假设我调用了 int 0xFF。在处理程序中,我可以发现调用了 int 0xFF 吗?

0 投票
1 回答
525 浏览

c - 我可以在软件中断上下文中使用 free_irq 吗?

内核文档说明free_irq了以下内容:

不得从中断上下文中调用此函数。

它包括软件中断吗?如何在软件 IRQ 函数中释放 IRQ?

谢谢你的帮助,

0 投票
2 回答
548 浏览

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>

0 投票
1 回答
9009 浏览

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 位字大?

谢谢。

0 投票
2 回答
2289 浏览

c - Linux 中的软中断与硬中断处理时序

我正在将一些软件从使用物理硬件设备转换为完整的软件模拟,现在我正在研究中断处理部分。

当此代码驱动物理硬件时,它通过 请求 IRQ request_irq(),现在我不再拥有物理设备,我将更改代码以使用“softirq”方法。

一个令人担忧的问题是,我看到软中断实际上只是必须等到调度程序调用它的事件。而硬件中断会导致正在运行的活动立即中断。这对我来说意味着,通过将我的代码转换为使用 softirqs 将导致原始代码中不存在的调度延迟。

我的理解正确吗?
无论如何我可以注册我的softirq以立即中断,就像硬件中断一样?
如果没有的话,无论如何要选择一个免费的硬件中断号并继续使用request_irq()并“欺骗”它以为我正在运行一个硬件设备?

0 投票
1 回答
949 浏览

interrupt - request_irq 成功。处理程序未调用

我正在为 BeagleBoard-xM Rev C 上的用户按钮编写一个模块。现在,我只是想在调用中断处理程序时(即按下用户按钮时)打印一条消息。

用户按钮对应于 GPIO 引脚 4。我正在执行 gpio_to_irq(4) 以获取我通过处理程序传递给 request_irq() 的 IRQ 编号,这是成功的。事实上,这是我的 request_irq 调用。

我的中断处理程序看起来像这样。

但是当按钮被按下时,中断处理程序永远不会被调用。关于如何调试的任何指示?

谢谢!