假设我有如下代码:
local_irq_disable();
... // some interrupts come during this time
local_irq_enable();
在我调用local_irq_enable()之后,所有阻塞的中断(挂起的中断)仍然存在&导致cpu响应。有什么东西可以清除挂起的中断吗?我的代码运行在ARM aarch64机器上。
我读了一些相关的文章:
(1)罗伯特·洛夫:
You cannot sleep in an interrupt handler because interrupts do not have a backing
process context, and thus there is nothing to reschedule back into. In other
words, interrupt handlers are not associated with a task, so there is nothing to
"put to sleep" and (more i
我有一个要求,我需要计算在1秒内发生的中断数量。我打算用下面的方法
过程上下文:
atomic_set(&irq_enblflg, 1);
//enable IRQ flg and sleep for 1 sec.
mdelay(1000);//maybe we can look for altenative later on
atomic_set(&irq_enblflg, 0);
中断上下文:
static irqreturn_t tach_isr(int irq, void *d)
{
//printk(KERN_CRIT "ISR########
我正在致力于支持使用Intel虚拟化的VMM中的posted中断。文档中为启用已发布的中断而指定的VM条目要求之一是,必须将“确认退出中断”VM-退出控制设置为1。
当我将此控件设置为1时,我的客户操作系统在停止响应之前运行一段时间。然后,主机操作系统也停止响应,并将一条消息打印到主机内核日志中,其中指出运行客户操作系统的CPU核心经历了硬锁(NMI watchdog: Watchdog detected hard LOCKUP on cpu 10)。
我正在阅读英特尔的文档,并试图思考这个问题,但我想知道是否还有其他人知道发生了什么。我现在的一般想法是,主机操作系统必须向客户操作系统当前正在
从一开始,就有三种不同的中断:
硬件中断,
由处理器本身的异常情况引起的软件中断(通常称为陷阱或异常)。
在指令集中执行特殊指令引起的软件中断。(例如系统调用)
我的问题是,当cpu切换到运行中断处理程序时,
是否为运行中断处理程序创建了一个新进程?
或者是现有进程的中断处理程序运行的一部分,例如,
- in the first kind of interrupt, the process which requests some service from a hardware device and then waits for the hardware in