首页 > 解决方案 > local_irq_disable 无法按预期工作

问题描述

local_irq_disable() 用于禁用当前处理器上的所有中断

我写了一个基本代码来测试local_irq_disable()。

#include <linux/module.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/irqflags.h>

static int __init my_init(void)
{
    pr_info("module is loaded on processor:%d\n", smp_processor_id());
    local_irq_disable();
    ssleep(10);
    local_irq_enable();
    return 0;
}

static void __exit my_exit(void)
{
}

MODULE_LICENSE("GPL");
module_init(my_init);
module_exit(my_exit);

当我在我的系统上加载它时,它会打印以下消息:

[10478.930188] 模块已加载到处理器:5

当我运行“watch -d -n 0.2 'cat /proc/interrupts'”时,它仍然在那些处理器上显示中断,我在这里缺少什么?

标签: clinuxlinux-kernelinterruptinterrupt-handling

解决方案


推荐阅读