【问题标题】:Restriction on interrupt routines in linux kernel driverslinux内核驱动程序中对中断例程的限制
【发布时间】:2012-07-02 15:17:10
【问题描述】:

每本设备驱动程序书都谈到不使用在中断例程中休眠的函数。 从 ISR 调用这些函数会出现什么问题?

【问题讨论】:

    标签: linux-kernel linux-device-driver


    【解决方案1】:

    内核的完全锁定是这里的问题。内核在执行中断处理程序时处于中断上下文中,即中断处理程序不与任何进程关联(当前宏无法使用)。

    如果您能够睡眠,您将永远无法回到中断的代码,因为调度程序不知道如何回到它。

    在中断处理程序中持有一个锁,然后休眠,允许另一个进程运行,然后再次进入中断处理程序并尝试重新获取锁,这会使内核死锁。

    如果您尝试详细了解内核中的调度是如何工作的,您很快就会意识到为什么在某些情况下睡眠是不可行的。

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 2015-12-31
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 2012-03-12
      • 2015-01-09
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多