[acpi] Expose ACPI tables via settings mechanism
authorMichael Brown <mcb30@ipxe.org>
Tue, 23 May 2017 14:44:22 +0000 (15:44 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 23 May 2017 17:48:06 +0000 (18:48 +0100)
commit356f6c1b64d7a97746d1816cef8ca22bdd8d0b5d
treebcfdf9da0e520ac48f6fd3b5ddb37f804fde97d9
parent993fd2b45140d071d7837ff502df771e87f14127
[acpi] Expose ACPI tables via settings mechanism

Allow values to be read from ACPI tables using the syntax

  ${acpi/<signature>.<index>.0.<offset>.<length>}

where <signature> is the ACPI table signature as a 32-bit hexadecimal
number (e.g. 0x41504093 for the 'APIC' signature on the MADT), <index>
is the index into the array of tables matching this signature,
<offset> is the byte offset within the table, and <length> is the
field length in bytes.

Numeric values are returned in reverse byte order, since ACPI numeric
values are usually little-endian.

For example:

  ${acpi/0x41504943.0.0.0.0}           - entire MADT table in raw hex
  ${acpi/0x41504943.0.0.0x0a.6:string} - MADT table OEM ID
  ${acpi/0x41504943.0.0.0x24.4:uint32} - local APIC address

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/config/config.c
src/config/settings.h
src/core/acpi_settings.c [new file with mode: 0644]
src/include/ipxe/errfile.h