问题标签 [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 延迟是多少?
- 如何估计 ARM 处理器上的 irq 延迟?
- irq 延迟的定义是什么?
linux - Linux 内核驱动程序:IRQ 触发或超时
在 linux 内核驱动程序中,我想无限重复以下序列:
- 在时间 T,启用硬件 IRQ
- 在时间 T 和 T +“大约”15ms 之间,如果触发了 IRQ,则可以到达 IRQ 回调。我这么说是因为我没有使用 RT 内核,如果它是 14 或 16 毫秒,那很好。在 IRQ 回调中,我需要写下 get cpu_clock(0) 并调用 wake_up_interruptible。超时需要被杀死。整个过程需要在 5ms 内重新启动。
- 如果通过 T + "大约" 15ms,IRQ 没有被触发,我需要执行一些其他代码。然后应该禁用 IRQ。整个过程需要在 5ms 内重新启动。
因此,通过 T+“大约”20ms,在最坏的情况下,需要重新启动整个过程。
请注意,如果 IRQ 在 18 毫秒时被物理触发,那太糟糕了,“我错过了火车”。我将在下一个序列中捕获另一个硬件触发器。
在测试时,我正在按照以下伪代码做一些事情:
然后:
然后:
}
和:
我正在尝试编写一个强大但简单的驱动程序。这是一个正确的实现吗?我怎样才能改进这个实现?
request - 中断请求 (IRQ) 技术的历史有多久了?
做一个报告,我在任何地方都找不到日期数据!IRQ 技术(粗略的日期)有多长时间了?
在中断请求存在之前计算机做了什么?只是产生错误?
kernel - 创建新任务时,linux内核如何唤醒空闲处理器?
我是 Linux 内核的新手。目前,我查看了空闲代码并有一个问题。当处理器在自己的运行队列中没有任何任务时,它可能会进入空闲模式,特定的 WFI(等待中断)。(我提到的只是关于 ARM 架构而不是 X86。所以 X86 出了点问题。)在保持 WFI 状态之后,也许其他处理器(不是空闲的)想要将他们的任务分散到这个空闲的处理器上(通过负载平衡)。当时一个繁忙的处理器使任务迁移。在我看来,迁移任务时,空闲处理器应该立即唤醒以处理任务。正确的?但是,我找不到任何唤醒空闲处理器的代码,但只找到了有关将任务注册到空闲处理器的运行队列的代码。
我想知道在给出新任务时唤醒处理器背后的机制是什么。或者它只是将任务从一个队列移动到另一个队列,而不是让它直到被一些不可预测的 IRQ 唤醒?
请告诉我真相:)
c - /proc/interrupts 如何更新?
我想知道如何 /proc/interrupts
保持最新状态?
是只irq
探测了驱动程序还是包含irqs
系统中所有可能的驱动程序的列表?
linux-kernel - Linux 中共享 IRQ 的并发中断处理
在ISR处理程序的上半部分可以做或需要做的事情是什么。我看到中断首先被禁用,所以当这完成后,我们不会错过在处理当前中断时可能到达的其他中断(在同一 IRQ 线上)吗?
或者是否有任何“实体”跟踪丢失的中断,以便在当前运行的 ISR 结束时为该行再次启用中断后处理它们?
linux-kernel - Linux PCI 设备驱动程序 - 总线与内核 IRQ
我正在为 Linux 中的 PCIe 卡编写设备驱动程序。我正在尝试在我的驱动程序中使用中断。
读取 PCI 配置寄存器(偏移量 0x3C)的“IRQ Line”部分会报告为设备分配的 IRQ 线是11。lspci -b -vv
还报告说我的设备的中断号是11。
这是它变得奇怪cat /sys/bus/pci/devices/<my_device>/irq
的地方......报告中断号是19。lspci -vv
还报告中断号是19。
在我的驱动程序中请求11不起作用。如果我在驱动程序中请求19,我可以很好地捕获中断。
是什么赋予了?
谢谢!!!
x86 - 如何知道中断是硬件中断还是cpu异常
我一直在研究 x86 上的中断以及内核如何使用中断处理程序处理各种中断。但有一件事让我感到困惑。
我知道中断可能是硬件产生的,例如磁盘和定时器中断,或者它们可能是 CPU 异常,例如页面错误、除以零异常等。让我感到困惑的是,一些 int 代码用于处理两者(INT 08 - 特别是 0F)。例如,Ralf Brown 的列表说 INT 09h 中断兼作KEYBOARD DATA READY
硬件中断和COPROCESSOR SEGMENT OVERRUN
异常。
所以我的问题是,给定这样的中断,中断处理程序如何知道要处理哪个中断?
c - 如何获取 linux 内核服务中断所花费的时间
我想跟踪一段代码中的抖动,我知道有很多潜在的来源(任务切换、系统调用、缓存未命中、将任务移动到另一个 CPU、cpu 节流等),我知道如何跟踪所有这些但唯一我不知道如何跟踪的是内核花费在服务中断上的时间。数据在 /proc/stat 中,但它以低分辨率测量 soft-irq 和 irq 中的时间,我正在寻找分辨率更高的东西。
有没有办法让内核服务中断所花费的时间降低到纳秒或至少微秒?
jvm - 为什么 java.nio.FileChannel transferTo() 和 transferFrom() 更快???它使用DMA吗?
为什么在某些 JVM/OS 组合上 java.nio.FileChannel transferTo() 和 transferFrom() 比逐字节传输(基于流或使用 ByteBuffer)更快???
这些方法是否使用直接内存访问 (DMA) 而不是为每个字节传输发出中断请求 (IRQ)?