linux - 如何从内核空间禁用 Linux 中的中断和调度程序?

标签 linux linux-kernel

当我的代码在内核空间中执行时,是否可以卡住所有处理器执行代码?

我需要转储大量数据,并且需要保证数据在我的代码执行期间保持一致。

local_irq_save 和 friends 仅对本地 cpu 禁用...

最佳答案

我猜您正在寻找类似大内核锁 (BKL) 的东西。但这在内核版本 2.6.39 之后不可用。 因此,您需要使用更细粒度的锁定版本,如 spin_lock_irqsave()spin_unlock_irqrestore(),它们都禁用本地 cpu 中断和抢占,直到锁定被持有。

但是,不建议长时间持有自旋锁。

关于linux - 如何从内核空间禁用 Linux 中的中断和调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809089/

相关文章:

c - 从 Linux 内核运行外部二进制文件

linux - 如何通过 svn post-commit hook 运行 svn update

c - 使用 writel 将 4 位写入 ioremap 内存地址

linux - Linux内核编程中如何判断一个文件是否是 ".."文件?

c - 这个来自内核代码的宏中的##是什么意思

c++ - 串行端口 : bytes from device all have their most significant bit = 0

linux - 使用调度程序启动的 Kettle 作业没有文件夹许可 (Linux)

linux - 如何将参数传递给 AWK 中处理的每一行的命令

c - 如何在 Linux 中创建一个系统调用来清理页面缓存?

c - 如何创建轻量级内核线程?