博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于preempt_enable 和 preempt_disable 【转】
阅读量:6840 次
发布时间:2019-06-26

本文共 499 字,大约阅读时间需要 1 分钟。

转自:

关于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
,如需转载请自行联系原作者
你可能感兴趣的文章
彻底理解cookie,session,localStorage(附代码)
查看>>
你还记得当初为什么进入IT行业吗?
查看>>
[翻译]MongoDb 架构(MongoDb Architecture)
查看>>
oracle统计数据库所有表的数据记录数SQL
查看>>
Kafka 安装配置及快速入门
查看>>
随机森林案例分析:德国银行信贷风险分析
查看>>
ant读书之使用ant进行java开发--第二章
查看>>
Glib实例学习(5)平衡二叉树
查看>>
【整理】OC中常用的关于时间格式的转换
查看>>
关于升级 xcode8
查看>>
Spring boot返回JSON类型响应及Content-Type设置
查看>>
递归详解
查看>>
CSS3 filter:drop-shadow滤镜与box-shadow区别
查看>>
windows7+Apache2.2+PHP5.4.29 环境搭建
查看>>
常用快捷键
查看>>
Spring AOP动态代理-切面
查看>>
Spring整合JMS(四)——事务管理
查看>>
C#中获取当前应用程序的路径及环境变量
查看>>
ThinkPHP5.0中Redis的使用和封装
查看>>
使用dwz框架搭建网站后台
查看>>