【问题标题】:What information does flag argument in spin_lock_irqsave save?spin_lock_irqsave 中的 flag 参数保存了哪些信息?
【发布时间】:2019-10-22 05:14:11
【问题描述】:

我知道自旋锁的 irqsave 版本在获取锁定时记录中断状态并在释放锁定时恢复中断状态。

我的疑问是,假设总共有 10 个中断向量,其中 2 个处于禁用状态(假设设备驱动程序已禁用这两个中断向量),同时使用 irqsave 变体进行锁定。 spin_lock_irqsave()flag 参数是否记下中断状态并在恢复期间仅启用 8 中断?如果在flag 参数中保存状态后,从其他 CPU 启用这 2 个禁用的中断怎么办?

【问题讨论】:

    标签: c linux-kernel interrupt spinlock irq


    【解决方案1】:

    spin_lock_irqsave 函数不会屏蔽和取消屏蔽特定的中断源;它禁用调用处理器上所有可屏蔽中断的处理。中断自旋锁创建不可中断的关键代码区域。

    【讨论】:

    • 那么,flag 只包含是否启用中断处理的信息?
    • 是的;任何 CPU 标志或任何与中断处理相关的必须保存和恢复的东西。
    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2020-11-01
    相关资源
    最近更新 更多