这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于preempt_enable 和 preempt_disable

共1条 1/1 1 跳转至

关于preempt_enable 和 preempt_disable

工程师
2014-11-05 20:41:09     打赏

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

 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]