zoukankan      html  css  js  c++  java
  • 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*.

    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.

  • 相关阅读:
    B/S与C/S的联系与区别
    ASP.NET中常用的26个优化性能方法(二)
    ASP.NET下如何防范SQL注入式攻击
    ASP.NET中常用的26个优化性能方法(一)
    Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)
    C#中海量数据的批量插入和更新 [转]
    [译文]从底层角度看ASP.NETA lowlevel Look at the ASP.NET Architecture( 转)
    C#制作Windows service服务系列
    通过C++ Interop把Windows窗体集成到MFC应用程序中
    【转】.NET内存管理、垃圾回收
  • 原文地址:https://www.cnblogs.com/baiyw/p/3716490.html
Copyright © 2011-2022 走看看