- 论坛徽章:
- 0
|
回复 7# MagicBoy2010
其实per-cpu是为每个cpu分配的一段内存空间,用来保存每个cpu的特殊内容。其实在这里寄存器保存到哪儿不会是什么问题,无论是保存在per-cpu结构中还是保存在另外的地方,最后我只要能引用到了就可以了。问题是我怎么保证在我执行echo 1 > /sys/devices/sytem/cpu/cpu1/save_reg时,所要保存的就是cpu1的寄存器。这个我想才是最主要的问题。
目前所采用的解决方法就是:
1. echo 1 > /sys/devices/system/cpu/cpu1/save_reg时,只是设定的相应的bitmask位,表明我要保存这个cpu的寄存器。
2. cpu_idle是每个cpu都要run的,所以在cpu_idle中做了一个判断(save_regs_mask中相应的bit位其实就是我在echo的handler中设定的)
if (test_bit(cpu_mask_check(smp_processor_id()), cpu_mask_bits(save_regs_mask)))
.....
save_regs(smp_processor_id())
.....
这样就可以保证我运行save_regs这个段程序所对应的cpu就是我想保存寄存器的cpu了
不知道这样可不可以回答magicboy兄的问题?
|
|