微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux 关机重启流程分析

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 版本较低,所以没有太详细的论述,希望将来的内核能有所改进。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top