当我阅读 xv6 源代码时,我对下面声明的语法感到困惑。谁能给我解释一下?
extern struct cpu *cpu asm("%gs:0");
当我阅读 xv6 源代码时,我对下面声明的语法感到困惑。谁能给我解释一下?
extern struct cpu *cpu asm("%gs:0");
这是asm label的一个特例。如果您引用变量,它会指示编译器发出%gs:0
而不是通常的符号名称。cpu
大概%gs
之前已经设置为 per-cpu 存储区域,struct cpu
指针位于偏移量为零。目的是让每个cpu访问自己的数据。