关于preempt_enable 和 preempt_disable 【转】

简介:

转自:http://blog.chinaunix.net/uid-8478094-id-2031177.html

关于preempt_enable 和 preempt_disable

允许抢占和禁止抢占。

例如:内核态程序 和 中断处理程序的互斥

因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。

load %r0, counter

add %r0,1 //发生中断

store %r0,conter

如果在第二条指令执行时发生中断,而中断处理程序也需要将counter加1等操作,那么counter变量的值就会变得紊乱。

因此,只要非中断处理代码要更新一个与中断处理程序共享的数据结构,那么它就首先禁止中断,执行临界段,然后再重新允许中断。在linux中,如下

preempt_disable();

load %r0, counter

add %r0,1 //发生中断

store %r0,conter

preempt_enable();




本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5392152.html,如需转载请自行联系原作者

相关文章
FEC1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
FEC1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
348 0
|
3月前
|
存储 C++
C++ enable_shared_from_this
`std::enable_shared_from_this<>` 是 C++11 引入的模板类,用于安全地在类中创建 `std::shared_ptr` 实例。它解决了成员函数中直接创建 `std::shared_ptr` 导致的对象多次销毁和未定义行为问题。通过继承 `std::enable_shared_from_this<>` 并调用 `shared_from_this()` 方法,可以在类的成员函数中安全地获取当前对象的 `std::shared_ptr`。
|
3月前
|
编解码 安全 Linux
Clock sources, Clock events, sched_clock() and delay timers【ChatGPT】
Clock sources, Clock events, sched_clock() and delay timers【ChatGPT】
|
3月前
pagefault_disable的效果
pagefault_disable的效果
|
安全
解决:efi usb device has been blocked by the current security policy
解决:efi usb device has been blocked by the current security policy 问题描述:U盘装系统或者其他操作时,是因为BIOS安全策略,出现上述错误无法进入后续步骤。 解决方法:按F2(Fn+F2)进入BIOS,在secure Boot 中security选择disable。解决! 延伸(可不读): 黑苹
11111 0
|
存储 机器学习/深度学习 安全
#pragma warning(disable:4996)是啥?
#pragma warning(disable:4996)是啥?
865 0
#pragma warning(disable:4996)是啥?
|
传感器 算法 Linux
Perf Subsystem —— 基于PMI实现的NMI Watchdog
## 背景 任务能否被及时响应,对内核来说,至关重用。Linux kernel实现了softlockup和hardlockup,用于检测系统是否出现了长时间无响应。 > A ‘softlockup’ is defined as a bug that causes the kernel to loop in kernel mode for more than 20 seconds, with
2177 1