看一些文档,总是发现支持的suspend状态不一致,回过头去把旧版本的kernel 文档看了一下,发现是有发展脉络的
/Documentation/power/states.txt 该文档在4x之后没有了,取而代之的是interface.txt
2.6.37 | 3.18 | 4.19 | |
IDLE | 无说明 | Suspend-To-Idle/S0/ "freeze" | freeze |
STANDBY | Standby Power-On Suspend/S1/"Standby" | Standby Power-On Suspend/S1/"Standby" | standby |
Sleep(STR) | Suspend-to-RAM/S3/"mem" | Suspend-to-RAM/S3/"mem" | mem |
Hibernate(STD) | Suspend-to-disk/S4/"disk" | Suspend-to-disk/S4/"disk" | disk |
suspend 与 IDLE有什么区别?IDLE指单个CPU核无任务做,则是idle状态;而suspend需要所有的核都无任务做,然后点了 non-boot cpu,需要关闭非启动cpu,也就是留下CPU0处理最后的事务,最后CPU0也要陷入到WFI中。
/sys/power/state
k69v1_64:/sys/power # cat state
freeze mem
这是PC上的结果,不是mem了,而是disk
因此我们说,移动端通常支持两种freeze和mem,而PC端通常也支持两种freeze和disk;所以我理解freeze就是所谓的idle状态,CPU无任务了,进程都冻结了,不知可否。
文档里说,STI一定是支持的,那么我们看一下.config中是否支持了,因为移动设备与PC是不一样的。
如图,STI是没有定义的,应该是如文档所述默认支持,因此不需要宏控制。HIBERNATION是没有define的,因此是不支持的,而默认的SUSPEND是支持的; 关于