ACPI in Linux
https://01.org/zh/linux-acpi
The goal of this project is to enable Linux to take advantage of platforms that support ACPI (Advanced Configuration & Power Interface). ACPI has been supported on virtually all high-volume i386, x86_64, and ia64 systems, since 1999.
ACPI is an abstraction layer between the OS and platform firmware and hardware. This abstraction allows the OS and the platform to evolve independently. Not only should a new OS be able to handle old hardware, but an old OS should be able to handle new hardware.
The latest ACPI specification is published on the ACPI home page: http://www.acpi.info.
The core of the Linux ACPI implementation comes from ACPICA (ACPI Component Architecture). ACPICA includes an ACPI Machine Language (AML) interpreter that is resident in the Linux kernel. Several other operating systems use the same ACPICA core interpreter, including BSD and OpenSolaris. ACPICA also comes with a simulator, test suites, and a compiler, to translate ACPI Source Language (ASL) into AML.
https://www.acpica.org/
The ACPI Component Architecture (ACPICA) project provides an operating system (OS)-independent reference implementation of the Advanced Configuration and Power Interface Specification (ACPI). It can be easily adapted to execute under any host OS. The ACPICA code is meant to be directly integrated into the host OS as a kernel-resident subsystem. Hosting the ACPICA subsystem requires no changes to the core ACPICA code. Instead, a small OS-specific interface layer is written specifically for each host OS in order to interface the ACPICA code to the native OS services.
The complexity of the ACPI specification leads to a lengthy and difficult implementation in operating system software. The primary purpose of the ACPI Component Architecture is to simplify ACPI implementations for operating system vendors (OSVs) by providing major portions of an ACPI implementation in OS-independent ACPI modules that can be easily integrated into any OS.
ABOUT ACPICA
Technical Overview
ACPICA defines and implements a group of software components that together create an implementation of the ACPI specification for both 32-bit and 64-bit platforms. A major goal of the architecture is to isolate all operating system dependencies to a relatively small translation or conversion layer (called the OS Services Layer) so that the bulk of the ACPICA code is independent of any individual OS. Therefore, hosting the ACPICA code on new operating systems requires no source code changes within the ACPICA code itself.
The major kernel-level components of the architecture include:
- AML Interpreter
- ACPI Table Manager
- ACPI Namespace Manager
- ACPI Resource Manager
- ACPI Fixed and General Purpose Event Support
- ACPI Hardware Support
- AML Disassembler (optional)
- AML Debugger (optional)
There are also several user-space tools and utilities that are built upon the above components (The ACPICA components run in both kernel mode and user mode):
- ACPI Source Code Compiler & Disassembler (iASL)
- ACPI Simulator/Executer (AcpiExec)
- ACPI System Table dump to ASCII utility
- ACPI Table Extractor (inverse of acpidump utility)
- ACPI Help Utility (AcpiHelp)
Generation Environments
ACPICA is written in ANSI C, and can be generated under many different 32-bit and 64-bit OS development environments. Source code packages are provided for the following environments: Microsoft Windows* and UNIX*.
- The Windows package includes Visual C++* project files and other ACPI utilities that run under Windows.
- The UNIX package has a format and licensing suitable for inclusion by commercial OS vendors.
There is no standalone Linux* source code package since ACPICA updates for Linux are provided periodically in patch form. The ACPICA subsystem is modified to integrate smoothly with the Linux kernel source. This includes conversion of the ACPICA source code to the Linux kernel coding standard and licensing under the GNU General Public License.
ACPI in Linux的更多相关文章
- ACPI引起linux系统无故重启
新装机器无故重启多次. centos6 64bit uname -a Linux Eos 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 201 ...
- 在基于acpi的linux系统上如何检查当前系统是否支持深度睡眠?
答: 执行以下命令: # dmesg|grep -i acpi |grep -i supports (S3表示支持深度睡眠) ACPI: (supports S0 S1 S3 S4 S5)
- linux, sysrq,acpi,apci,uio,subsystem daemon
linux, sysrq,acpi,apci Linux设备模型 一.sysfs文件系统: sysfs文件系统是Linux2.6内核引入的,它被看成是与proc.devfs和devpty等同类别的文 ...
- Linux acpi off学习的必要
ACPI是Intel(i386,x86_64,IA64)平台的标准固件规范,绝大部分OS需要从BIOS得到的信息都可以从ACPI得到,并且现在的趋势是未来的任何新的特性相关的信息都只能从ACPI得到. ...
- 转载-ACPI的知识
ACPI – the Advanced Configuration & Power Interface. ACPI是OS,BIOS和硬件之间的抽象层.它允许OS和平台独立的发展,比如新的OS可 ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- centos7系统管理和运维实战
centos7系统管理和运维实战 centos7安装配置 yum install -y net-tools >/etc/hostname echo "sqlserver01" ...
- Android电源管理基础知识整理
前言 待机.睡眠与休眠的区别? Android开发者官网当中提到"idle states",该如何理解,这个状态会对设备及我们的程序造成何种影响? 进入Doze模式中的idle状态 ...
- S3待机 S4休眠
https://hceng.cn/2018/01/18/Linux%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/ 1.1系统睡眠模型Suspend On (on) S0 - ...
随机推荐
- 设计模式(一)单例模式:实现 Serializable 接口之后的额外操作
思想: 一个单例类,无论采取哪一种设计(单元素枚举类除外), 一旦间接或者直接实现 Serializable 接口,为了保证单例,就要多增加一点考虑:保证类在反序列化之后能够保证单例. public ...
- [LOJ#113]最大异或和
[LOJ#113]最大异或和 试题描述 这是一道模板题. 给由 n 个数组成的一个可重集 S,求一个集合 T⊆S,使 T1 xor T2 xor … xor T|T| 最大 输入 第一行一个数 n.第 ...
- [luoguP2569] [SCOI2010]股票交易(DP + 单调队列)
传送门 $f[i][j]$ 表示第i天,手中股票数为j的最优解 初始化 $f[i][0]=0$ $0<=i<=n$ 4种方式转移 以前没买过,第i天凭空买 $f[i][j]=-j*ap$ ...
- 字符串匹配之Sunday算法
Sunday算法不像KMP算法那么复杂,但是效率又比较高,在KMP之上,下面简单介绍Sunday算法及其实现. Sunday 算法由 Daniel M.Sunday 在 1990 年提出,它的思想跟 ...
- adb shell am命令
adb shell am命令是在cmd命令行可以通过命令来启动Activity,Boradcast,Service等,更多使用可以参考下面附件. 比如在cmd串口我们发送广播,广播action是&qu ...
- 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑
公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...
- La 3942 字符串+dp
题目大意:一个字符串,可以分解成若干英语单词的连接(单词可以重复使用),求有多少种方法? #include<iostream> #include<cstdio> #includ ...
- 浏览器的 16ms 渲染帧--摘抄
由于现在广泛使用的屏幕都有固定的刷新率(比如最新的一般在 60Hz), 在两次硬件刷新之间浏览器进行两次重绘是没有意义的只会消耗性能. 浏览器会利用这个间隔 16ms(1000ms/60)适当地对绘制 ...
- springboot整合mybatis(SSM开发环境搭建)
0.项目结构: ---------------------方法一:使用mybatis官方提供的Spring Boot整合包实现--------------------- 1.application.p ...
- hdu 4183(网络流)
Pahom on Water Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...