learningOS开源操作系统社区
  • 首页
  • 训练营
  • 明星学员
  • 共建单位
  • 项目实习
  • 问答论坛
登录
    Copyright © 2024 opencamp.ai All rights reserved.
    关于lab4, local_intr_save/restore
    匿名2023/07/31 19:51:37提问
      lab4student
    354

    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
        暂无数据