Linux 关机重启流程分析
时间:04-11
来源:
点击:
6. ACPI 概述
在 2.4.20 内核中 ACPI 模块被注明为试验和未完成,里面有一部分功能也许没有实现。如果 APM 和 APCI 两个模块同时编译进内核,APM 在 ACPI 前被加载,APM 起作用使 ACPI 退出。对于系统电量、电源实践一类的支持(主要是在笔记本上有用),靠的是 acpid 这个 daemon 程序。
没有一个功能类似 apm 的应用程序切换状态,acpi 的程序仅仅完成了对 acpi 状态的查询。用户实现 S0-S4 的功能可以直接向 /proc/acpi/sleep 文件中写入数字来实现。通过读出 (cat) 其中的内容可以知道系统到底支持那些模式。
acpi 模块的源代码主程序在 linux/drivers/acpi/driver.c 中,如果向 sleep 文件写东西,就转到了 linux/drivers/acpi/ospm/system/sm_osl.c 文件的 sm_osl_proc_write_sleep 函数中,这个函数后来调用了 sm_osl_suspend 函数。在这个函数里完成了各种功能,包括保护各种状态。最后真正的 sleep 是通过对 acpi_enter_sleep_state 的调用完成的,这个函数在 Linux /drivers/acpi/hardware/hwsleep.c 文件中,这里写了 acpi 的寄存器使系统进入 sleep 状态。写寄存器的指令在这个目录下面的 hwregs.c 中。
7. 总结
本文对 acpi 的介绍非常简略,实际上 ACPI 必定会成为将来 Linux 内核中首选的电源管理方式。由于目前官方代码中 ACPI 版本较低,所以没有太详细的论述,希望将来的内核能有所改进。
在 2.4.20 内核中 ACPI 模块被注明为试验和未完成,里面有一部分功能也许没有实现。如果 APM 和 APCI 两个模块同时编译进内核,APM 在 ACPI 前被加载,APM 起作用使 ACPI 退出。对于系统电量、电源实践一类的支持(主要是在笔记本上有用),靠的是 acpid 这个 daemon 程序。
没有一个功能类似 apm 的应用程序切换状态,acpi 的程序仅仅完成了对 acpi 状态的查询。用户实现 S0-S4 的功能可以直接向 /proc/acpi/sleep 文件中写入数字来实现。通过读出 (cat) 其中的内容可以知道系统到底支持那些模式。
acpi 模块的源代码主程序在 linux/drivers/acpi/driver.c 中,如果向 sleep 文件写东西,就转到了 linux/drivers/acpi/ospm/system/sm_osl.c 文件的 sm_osl_proc_write_sleep 函数中,这个函数后来调用了 sm_osl_suspend 函数。在这个函数里完成了各种功能,包括保护各种状态。最后真正的 sleep 是通过对 acpi_enter_sleep_state 的调用完成的,这个函数在 Linux /drivers/acpi/hardware/hwsleep.c 文件中,这里写了 acpi 的寄存器使系统进入 sleep 状态。写寄存器的指令在这个目录下面的 hwregs.c 中。
7. 总结
本文对 acpi 的介绍非常简略,实际上 ACPI 必定会成为将来 Linux 内核中首选的电源管理方式。由于目前官方代码中 ACPI 版本较低,所以没有太详细的论述,希望将来的内核能有所改进。
- REDIce-Linux--灵活的实时Linux内核(11-12)
- linux文件系统基础(02-09)
- Linux标准趋向统一(11-12)
- linux基础技术(02-09)
- LINUX的目录树(02-09)
- 在Windows下启动Linux(02-09)