Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181919
  • 博文数量: 57
  • 博客积分: 2215
  • 博客等级: 大尉
  • 技术积分: 635
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-09 15:47
个人简介

非淡泊无以明志,非宁静无以致远

文章分类

全部博文(57)

文章存档

2013年(12)

2011年(15)

2010年(30)

我的朋友

分类: LINUX

2011-02-28 12:06:05

关于preempt_enable preempt_disable

允许抢占和禁止抢占。

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

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

load %r0, counter

add %r0,1 //发生中断

store %r0,conter

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

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

preempt_disable();

load %r0, counter

add %r0,1 //发生中断

store %r0,conter

preempt_enable();

阅读(3502) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2011-03-05 13:36:13

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com