Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236717
  • 博文数量: 65
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 417
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-05 15:12
个人简介

路漫漫其修远兮,吾将上下而求索

文章分类

全部博文(65)

文章存档

2016年(1)

2015年(12)

2014年(34)

2013年(16)

2012年(2)

我的朋友

分类:

2012-12-02 20:49:13

关于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();

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