android poweroff 流程
关机流程
android系统都有一个关机按键,长按这个按键系统会进行关机操作。具体实现流程如下:
在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下:
reboot——>sys_reboot()——>kernel_power_off()——>machine_power_off()——>pm_power_off();
pm_power_off 是一个函数指针,他指向和具体硬件平台相关的关机操作函数。
和sys_reboot相关的系统调用在source/kernel/sys.c中实现,然后在
source/asm-arm/unistd.h中添加系统调用号。
然后在source/arch/arm/kernel/entry-common.S中对sys_call_table(系统调用表)
进行定义,具体的表在source/arch/arm/kernel/call.S中实现。
Reboot流程
Linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为基础开发出全新的功能来。
1.概述
在linux下的关机和重启可能由两种行为引发,一是通过用户编程,一是系统自己产生的消息。用户和系统进行交互的方式也有两个,一个是系统调用:sys_reboot,另一个就是apm或则acpi的设备文件,通过对其操作也可以使系统关机或者重启。
2.通过系统调用sys_reboot的重启
这个系统调用定义了一系列的MAGIC_NUMBER,在调用的开始部分首先检查MAGIC_NUMBER是否正确,只有正确才继续向下运行。在重启的时候转向分支
case LINUX_REBOOT_CMD_RESTART:
首先使用notifier_call_chain向其它部分发出重启的消息,然后调用machine_restart函数完成重启。
machine_restart函数的开始部分有一段SMP相关的代码,主要完成多CPU时由一个CPU完成重启操作,其它CPU处于等待状态。之后系统根据一个变量reboot_thru_bios的内容判断重启方式,通过阅读reboot_setup我们可以得知,这个参数的内容是在系统启动时指定的,决定了是否利用bios,事实上是系统复位后的入口(FFFF:0000)地址的程序进行重启。在不通过bios进行重启的情况下,系统首先设定了重启标志,然后向端口0xfe写入数字0x64,这种重启的具体原理我还不大清楚,似乎是模拟了一次reset键的按下,希望大家和我讨论。在通过 bios重启的情况下,系统同样先设定了重启模式,然后切换到了实模式,通过一条ljmp $0xffff,$0x0完成了重启。
3.通过系统调用sys_reboot进行关机
在系统调用的处理分支上,我们可以看到,首先同样是检查MAGIC_NUMBER,然后在
case LINUX_REBOOT_CMD_POWER_OFF:
的执行流程里面,又是使用notifier_call_chain发出了关闭计算机电源的消息,紧接着执行了machine_power_off 函数。我们在machine_power_off函数中可以看到,如果pm_power_off这个函数指针不为空,那么系统就会通过调用这个函数进行关机。在apm已经加载的情况下(SMP除外),实际上pm_power_off函数实际上指向了apm.c中的apm_power_off,在这个函数里系统通过apm_info结构里的值,使用切换到实模式关机,或者使用apm_bios_call_simple函数调用保护模式下的apm接口关机两种方法。
分享到:
相关推荐
poweroff 流程详解
定时关机程序,功能相当完善,界面简单明了。可以设定时间和计划任务,支持远程计算机管理和局域网唤醒功能(Wake On LAN),支持关机提示等。
安装在android系统后.出现一个poweroff的应用图标. 用户点击后系统立马关机.方便的触摸屏式一键关机.
很小巧别致的关机软件,使用方便,内附使用说明和源码,供参考!
Poweroff 3.0.1.3智能关机绿色版软件 实现定时关机、开机、重启等,功能很是强大。 使用 方便! 强烈推荐!
一个免费小巧功能强大的关机管理工具软件。您可以设定不同时间,让它自动实现注销、重新启动、关机、切断电源、待机、休眠、锁定、远程唤醒等多项功能。支持远程控制计算机。支持关机前提示信息、关机前运行程序、...
Poweroff 方便操作计算机的电源和显示器电源
这是一款可以方便的自动关机的小工具,可以自定义设置关机内容和自定义关机时间,小巧不占用资源
单独一个小软件,不用安装,功能设置齐全;不需要注册的免费软件。
Poweroff 3.0.1.3 是一个小巧好用的定时关机程序。它能以 NT 服务来运行,能在 Win2000Pro 或 WinXP 系统中较好地防止用户在任务管理器里中止进程。
一个非常有用的小工具,就是简单的定时关机功能,有时候晚上很困,电脑却还有工作要继续完成就可以用上它。你可以根据设置的时间自动关闭电脑的软件。如果您在临睡前有听音乐、英语的喜好,或是因计算机尚未完成工作...
自动关机 (PowerOff) V2009.06.29 中文绿色免费版
自动关机
XP Poweroff
一个GDI+的简易教程一个GDI+的简易教程
修复安装mac黑苹果后不能关机的补丁驱动
Power off driver for i.mx6.
可以设置定时重启服务器,定时执行程序,远程控制服务器重启等功能
Linux定时关机小工具。 echo "请输入参数,执行例子:$0 0.5 ,半小时后关闭电脑。 "echo "电脑将在$1小时后关闭。。。
PowerOff3.0.1.3电脑定时关机软件