lab4當中為中断标記設置的兩個宏 (如下)
sync.h
#define local_intr_save(x) do { x = __intr_save(); } while (0)
#define local_intr_restore(x) __intr_restore(x);
请问为什么local_intr_save需要以do { } while (0)包著核心部分的x = __intr_save();? 有什么安全原因么
另外是result中, proc.c裡proc_run中的這一段
bool intr_flag;
local_intr_save(intr_flag);
{
proc->pid = get_pid();
hash_proc(proc);
list_add(&proc_list, &(proc->list_link));
nr_process ++;
}
local_intr_restore(intr_flag);
看不太出來設置中断标記的必要, 求讲解 @@