UEFI应用与编程--AcpiTable

本文详细探讨了UEFI环境中ACPI表的使用和编程,通过分析AcpiTable.c和AcpiTable.inf文件,揭示了ACPI在UEFI系统中的关键作用和配置技巧。
摘要由CSDN通过智能技术生成

AcpiTable.c

/*
 * AcpiTable.c
 *
 *  Created on: 2017年9月20日
 *      Author: 
 */

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <IndustryStandard/Acpi10.h>
#include <Protocol/AcpiTable.h>
#include "UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.h"
#include <stdio.h>


EFI_STATUS
EFIAPI
UefiMain (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  EFI_STATUS                                Status;
  EFI_ACPI_DESCRIPTION_HEADER               *AcpiHeader;
  VOID                                      *AcpiTable;
  EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER *RSDP;
  UINTN                                     EntryIndex;

  Print (L"-----------------------------------------------------\r\n");
  AcpiTable = NULL;
  Status = EfiGetSystemConfigurationTable (
             &gEfiAcpi20TableGuid,
             &AcpiTable
             );
  if (EFI_ERROR (Status)) {
    Status = EfiGetSystemConfigurationTable (
               &gEfiAcpi10TableGuid,
               &AcpiTable
               );
  }
  //
  // We do not ASSERT if AcpiTable not found. It is possbile that a platform does not produce AcpiTable.
  //
  if (AcpiTable == NULL) {
    Print(L"acpi table is not found.\r\n");
  }
  RSDP = (EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER*)AcpiTable;
  Print(L"RSDP Address    :%08x\r\n", AcpiTable);
  Print(L"Signature       :");
  putchar(RSDP->Signature & 0x000000FF);
  putchar((RSDP->Signature & 0x0000FF00) / 16 /16);
  putchar((RSDP->Signature & 0x00FF0000) / 16 /16 / 16 /16);
  putchar((RSDP->Signature & 0xFF000000) / 16 /16 / 16 /16 / 16 /16);

  putchar((RSDP->Signature & 0x000000FF00000000) / 16 /16 / 16 /16 / 16 /16 / 16 /16);
  putchar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值