>
> >
>
Intel手册Vol-2A,3-127。
P.S. 不要在顶部回复。
--
"Sometimes the only way to stay sane is to go a little crazy."
2008/10/21 hc huang <china...@gmail.com>:
> 刚才我没有说清楚,你看看这条语句中的cli最终实现是什么?cli是CPU的一条指令,如果再解释其底层实现就需要拆开CPU来看看了:-)
> #define cli() __asm__ ("cli"::)
> 这里并没有调用任何函数,只是使用了一条汇编指令cli,而你刚才所解释的是2.26内核版本上的解释,我想问
> 的是cli汇编指令是怎样实现的。麻烦你再帮解答一下!
cli在汇编里指关闭eflags中断标志位,这样所有传向CPU的中断,CPU就在也接受不到信号了。这只是针对X86
对其他平台,还有不同的指令。
还是建议使用local_irq_disable();宏
>
> 2008/10/21 李则良 <lizelia...@gmail.com>
>>
>> 2008/10/21 hc huang <china...@gmail.com>:
>> > 请问:linux内核在进行关中断时使用了指令cli()进行关中断,但是这条指令的底层实现是怎样的呢?
>> 你是指什么?在不同平台上吗?这和平台相关,在x86上就是借助cli指令来实现的
>> 219static inline void __deprecated cli(void)
>> 220{
>> 221 local_irq_disable();
>> 222}
>>
>> >
>> > >> >
>> >
>
>
>2008/10/21 hc huang <china...@gmail.com>:
>> 刚才我没有说清楚,你看看这条语句中的cli最终实现是什么?
>> #define cli() __asm__ ("cli"::)
>> 这里并没有调用任何函数,只是使用了一条汇编指令cli,而你刚才所解释的是2.26内核版本上的解释,我想问
>> 的是cli汇编指令是怎样实现的。麻烦你再帮解答一下!
>cli是CPU的一条指令,如果再解释其底层实现就需要拆开CPU来看看了:-)
>cli在汇编里指关闭eflags中断标志位,这样所有传向CPU的中断,CPU就在也接受不到信号了。这只是针对X86
>对其他平台,还有不同的指令。
是所有的中断信号吗?好像还有一种叫做Non-Maskable Interrupt 的东西?前面WangCong已经特意将参考手册的页码都标出来了,里面的描述应该是最权威的了,还是应该好好看看的嘛。