2009年8月21日金曜日

local_irq_disable

前回からstart_kernelの位置は少し進みます。

======
local_irq_disable();
early_boot_irqs_off();
early_init_irq_lock_class();
======

今日はlocal_irq_disableを見てみましょう。こちらはdefineで切られていて、実際に処理するのは「native_irq_disable」関数です。

include/asm-x86/irqflags.h
=====
static inline void native_irq_disable(void)
{
asm volatile("cli": : :"memory");
}
=====

cliで割り込みを禁止しているだけです。最後の「memory」はコンパイラにメモリの場所を変更することを伝えています。なぜこれが必要なのかは理解できていません。。。

0 件のコメント:

コメントを投稿