linux suspend函数,linux pm-suspend过程彻底研究

linux pm-suspend过程彻底研究

上一篇 /

下一篇  2008-04-10 21:18:35

/ 个人分类:Linux

1.pm-suspend-->symbol link to /usr/lib/pm-utils/bin/pm-action

2.pm-action通过处理提取出命令的suspend字段放在 ACTION变量中

用suspend  为参数调用 /usr/lib/pm-utils/functions中的 pm_main

3.pm_main

pm_main()

{

if [ -n "$PM_LOGFILE" ]; then

exec > "$PM_LOGFILE" 2>&1     ##如果/var/log/pm-suspend.log存在,将所有echo输出重定向到该文件中

fi

take_suspend_lock || exit 1

rm -f "$INHIBIT"

run_hooks "$1"    ##以 suspend为参数调用run_hook 函数

##最终调用 do_suspend做真正的休眠

if [ ! -e "$INHIBIT" -a "$(type -t "do_$1")" == "function" ]; then

sync ; sync ; sync

"do_$1"

fi

run_hooks "$2" reverse    ##调用 run_hooks resume reverse

remove_suspend_lock 200

return 0

}

take_suspend_lock()

{

VT=$(fgconsole)   ##取forward ground console值,VT=7

chvt 63            ##切换到VT 63

if [ -f /.suspended ]; then    ##如果/ 下存在.suspend文件,则从该文件中读取pid值

read pid < /.suspended

if [ -d /proc/$pid ]; then  ##若/proc下存在相应的入口,函数退出,回到pm_main中,pm-suspend命令也就退出。

return 1

fi

fi

##以上其实是测试用户是否已经运行过一个pm-suspend命令,系统不会连续运行pm-suspend

echo "$$" > /.suspended        ##打印自己的pid到/.suspend文件

rm -f /var/run/pm-suspend

touch /var/run/pm-suspend

return 0

}

remove_suspend_lock()

{

rm -f /var/run/pm-suspend

chvt 1      ##切换到VT1

chvt  $VT    ##切换到休眠前的VT

openvt -- sh -c "usleep $1 ; rm -f /.suspended >/dev/null 2>&1 0/dev/null 2>&1 0

#执行sh :睡200秒,删掉/.suspend文件

}

4.run_hooks函数主要做的事情就是把/usr/lib/pm-utils/hooks 下的脚本统统执行一遍

hooks目录下的脚本命名方式是: 数字+要hook的名字

suspend 时,数字小的脚本先执行,resume时,执行相反的顺序,这样保证suspend-resume有正确的顺序。

我来说两句

显示全部

d8a3dac35532145b347031a8fb402eba.gif

4d73fc83cb27b31041650c043e06fdc8.gif

5d06f4dc9b08a7e1fecdedaf9fe87c66.gif

659391f05d11818e0d3bd694a6d99ddc.gif

f27d7d9f67d98cc858fe74ff4d76554e.gif

b0d82b880d66765dd2a1af173b20f406.gif

e87f042c31e114675541bb49e0fbf138.gif

97a372eda248bf63679ecf2d47467589.gif

a14a392968e29ace4cb2ca390d53264e.gif

ff31a40db0d852c3704276b17a1dd158.gif

46298ad80746c3790e9535ce3396efec.gif

ef97f2303f935b723744c0c99db267f8.gif

46add61d58ae5b455d8994b1485357d3.gif

701ffdce43c5ac45c241dba6a7ae431d.gif

4ac0c1a50de5d21a8087006d0295547a.gif

e54bbadbdbb00b0b5cc4182352ca2352.gif

afb655844bdfda4cf47fef6d239f009d.gif

bf5c12b671f1179ba425de53370ebd3d.gif

865ad24093d248b0ec3b85ea66a6aaa7.gif

ab80f8b6419577f8a8ad7bb690794024.gif

内容

昵称

验证

ada834077f6a48ad60a11ec0354fde86.png

提交评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值