如何将 __attribute__((section(“name”))) 用于每个 cpu 全局变量
How to use __attribute__((section(“name”))) for a per-cpu global variable
我遇到了对每个 cpu 全局变量使用 __attribute__((section(“name”)))
的代码。我已经搜索过它并且已经知道它用于在链接描述文件的帮助下将数据放置在指定的内存位置。我不明白的是它如何用于 per-cpu 数据——也就是说,如果将全局变量放在用 __attribute__((section(“name”)))
定义的部分内, 然后每个 cpu 都有自己的这个全局变量的副本。我可能错了,但我的直觉是链接描述文件与 __attribute__((section))
一起使用来实现这一点。但是我不知道怎么做。一个小的工作示例,或者提示如何在代码中实现这一点会很棒。
注:本题是针对C语言的
操作system/kernel初始化硬件,使得该内存位置的数据不是全局共享的,而是特定于每个CPU。据推测,这是通过在每个 CPU 上安装略有不同的页表来实现的。所有 section 属性所做的就是将变量放入那个特殊的内存区域,但是一旦底层硬件配置为启用缺少 cross-CPU 共享,这就是创建变量 CPU-specific 所需的全部。
我遇到了对每个 cpu 全局变量使用 __attribute__((section(“name”)))
的代码。我已经搜索过它并且已经知道它用于在链接描述文件的帮助下将数据放置在指定的内存位置。我不明白的是它如何用于 per-cpu 数据——也就是说,如果将全局变量放在用 __attribute__((section(“name”)))
定义的部分内, 然后每个 cpu 都有自己的这个全局变量的副本。我可能错了,但我的直觉是链接描述文件与 __attribute__((section))
一起使用来实现这一点。但是我不知道怎么做。一个小的工作示例,或者提示如何在代码中实现这一点会很棒。
注:本题是针对C语言的
操作system/kernel初始化硬件,使得该内存位置的数据不是全局共享的,而是特定于每个CPU。据推测,这是通过在每个 CPU 上安装略有不同的页表来实现的。所有 section 属性所做的就是将变量放入那个特殊的内存区域,但是一旦底层硬件配置为启用缺少 cross-CPU 共享,这就是创建变量 CPU-specific 所需的全部。