关于lab4, local_intr_save/restore
匿名2023/07/31 19:51:37提问
    lab4student
307

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);

看不太出來設置中断标記的必要, 求讲解 @@

回答(0
    推荐问答
      Simple Empty
      暂无数据