70,017
社区成员




想请问一下大家,我在很多操作系统中看到中断总开关的实现方式都不一样,一般是下面两种方法中的一种,或者两种都同时提供,
请问一下,这两种方法有什么本质上的区别么,或者大家知道这两种中断锁实现方法的学术名称是什么
方法一
static unsigned int Nesting = 0;
void enableInterrupt (void)
{
Nesting--;
if(Nesting == 0)
开中断;
}
void disableInterrupt (void)
{
Nesting++;
关中断();
}
方法二:
unsigned int disableInterrupt (void)
{
unsigned int flag;
flag = 当前中断状态;
关中断();
return flag;
}
void enableInterrupt (unsigned int flag)
{
当前中断状态 = flag;
}
中国说法是殊途同归
西方说法是条条大路通罗马
假设你吃3600颗茴香豆会饱,少一颗都不行。
那么要么你数着豆吃,数够了就停下;
要么你吃到饱,停下。
其实都是一样的。
不是定时,是支持嵌套中断,高优先级中断可以再入低优先级的中断~