autosleep

Autosleep在Linux内核中用于在系统无任务执行时自动进入休眠状态。该功能需要在配置中开启,并通过写入特定命令到/sys/power/autosleep来控制。启用和禁用过程涉及到wakeup events、工作队列和状态判断。当有活动的wakeup source时,会阻止autosleep,更新防止休眠的时间。
摘要由CSDN通过智能技术生成

摘自 : https://blog.csdn.net/weixin_44239151/article/details/109032781

Autosleep原理

  1. 当系统没有任何事情做的时候,就尝试suspend。

  2. 当系统中没有wakeup event事件发生的时候,就可以尝试suspend,需要wakeup event framework机制支持。

  3. autosleep功能需要在kernel config中开启CONFIG_PM_AUTOSLEEP=y。

  4. 通过写"mem, disk, standby, freeze"到/sys/power/autosleep可以开启autosleep。

  5. 通过写"off"到/sys/power/autosleep就可以关闭autosleep。

流程分析
A: 通过执行"echo mem > /sys/power/autosleep"此命令,系统就会在没有事情可做的时候,选择执行suspend的流程。

static ssize_t autosleep_store(struct kobject *kobj,
			       struct kobj_attribute *attr,
			       const char *buf, size_t n)
{
   
	suspend_state_t state = decode_state(buf, n);
	int error;

	if (state == PM_SUSPEND_ON
	    && strcmp(buf, "off") && strcmp(buf, "off\n"))
		return 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归心2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值