Gar*_*att 1 c kernel linux-kernel
我需要遍历每个cpu,这样我就可以从中获取一个per_cpu
值,但似乎没有for_each_cpu(i)
宏.linux内核版本是2.6.26.5
我想做的事情如下:
for_each_cpu(i)
per_cpu(vm_event_states, i)
Run Code Online (Sandbox Code Playgroud)
回到2.6.26内核,for_each_cpu()
被调用了for_each_cpu_mask()
.它定义在cpumask.h
,并带有两个参数 - 迭代器和掩码.掩码是一个cpumask_t
左值,它定义了要迭代的CPU集.
有三个辅助宏只需要一个迭代器 - 你可能想要使用其中一个:
for_each_possible_cpu(cpu)
for_each_present_cpu(cpu)
for_each_online_cpu(cpu)
Run Code Online (Sandbox Code Playgroud)
for_each_possible_cpu()
迭代内核启动时可能存在的所有CPU; for_each_present_cpu()
迭代当前存在的所有CPU(在不支持CPU热插拔的系统上,这两个是相同的); 并for_each_online_cpu()
迭代当前启用且可供调度程序使用的所有CPU.
请注意,for_each_online_cpu()
应在get_online_cpus()
/ put_online_cpus()
section中使用,以防止在迭代时更改联机CPU映射.
这很可能for_each_possible_cpu()
就是你想要的.
归档时间: |
|
查看次数: |
3280 次 |
最近记录: |