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

Submitted by Michael Shaver, posted on 21 Apr 2009 - 15:08 - 0 comments

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*.

  1. The Windows package includes Visual C++* project files and other ACPI utilities that run under Windows.
  2. 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的更多相关文章

  1. 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 ...

  2. 在基于acpi的linux系统上如何检查当前系统是否支持深度睡眠?

    答: 执行以下命令: # dmesg|grep -i acpi |grep -i supports (S3表示支持深度睡眠) ACPI: (supports S0 S1 S3 S4 S5)

  3. linux, sysrq,acpi,apci,uio,subsystem daemon

    linux, sysrq,acpi,apci Linux设备模型  一.sysfs文件系统: sysfs文件系统是Linux2.6内核引入的,它被看成是与proc.devfs和devpty等同类别的文 ...

  4. Linux acpi off学习的必要

    ACPI是Intel(i386,x86_64,IA64)平台的标准固件规范,绝大部分OS需要从BIOS得到的信息都可以从ACPI得到,并且现在的趋势是未来的任何新的特性相关的信息都只能从ACPI得到. ...

  5. 转载-ACPI的知识

    ACPI – the Advanced Configuration & Power Interface. ACPI是OS,BIOS和硬件之间的抽象层.它允许OS和平台独立的发展,比如新的OS可 ...

  6. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  7. centos7系统管理和运维实战

    centos7系统管理和运维实战 centos7安装配置 yum install -y net-tools >/etc/hostname echo "sqlserver01" ...

  8. Android电源管理基础知识整理

    前言 待机.睡眠与休眠的区别? Android开发者官网当中提到"idle states",该如何理解,这个状态会对设备及我们的程序造成何种影响? 进入Doze模式中的idle状态 ...

  9. 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 - ...

随机推荐

  1. POJ 2353 Ministry

    Ministry Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4220   Accepted: 1348   Specia ...

  2. iOS---->CADisplayLink、比NSTimer更精确的定时器

    什么是CADisplayLink CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器.我们在应用中创建一个新的 CADisplayLink 对象,把它添加到一个r ...

  3. 【bzoj2625】[Neerc2009]Inspection 有上下界最小流

    题目描述 You are in charge of a team that inspects a new ski resort. A ski resort is situated on several ...

  4. Tarjan的强联通分量

    求强联通分量有很多种. <C++信息学奥赛一本通>  中讲过一个dfs求强联通分量的算法Kosdaraju,为了骗字数我就待会简单的说说.然而我们这篇文章的主体是Tarjan,所以我肯定说 ...

  5. eclipse Java EE安装和web项目的创建

    一.根据http://www.itnose.net/detail/6139800.html基本安装成功二.根据http://www.cnblogs.com/freebsd-pann/archive/2 ...

  6. BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】

    题目 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N", ...

  7. docker学习路线

    http://www.simapple.com/320.html DOCKER 官网 :https://docs.docker.com/docker-for-mac/

  8. UVa1476 Error Curves

    画出函数图像后,发现是一个类似V字型的图. 可以用三分法找图像最低点 WA了一串,之后发现是读入优化迷之被卡. /*by SilverN*/ #include<iostream> #inc ...

  9. 27深入理解C指针之---字符串基础

    一.字符串:是以ASCII字符NUL结尾的字符序列,NUL表示为\0 1.定义:将字符按顺序存储在数组中,以NUL结尾. 2.特征: 1).每个字符串长度只是包含所有的字符,不包括最后的NUL,手动分 ...

  10. iOS11及Xcode9适配问题汇总

    UIScrollView and UITableView的新特性 ScrollView 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传 ...