Hi hope all enjoying the dynamic world of Linux. i need help from someone who has expertise in c/c++,kernel development especially ACPI related module and BIOS stuff. Infact i want to detect whether a system BIOS is ACPI compatiable or not. While reading some text on the internet i come to know when an ACPI-aware operating system kernel is started, it search for a small data structure within the BIOS memory area. If a valid structure is found (e.g. if its checksum and signature match) then the kernel uses this structure to obtain a pointer to the ACPI tables and memory map. This information is used by the kernel to preserve the ACPI tables when the virtual memory system is started. My question is where the above mentioned piece of code is handled in v.big kernel code base. Actually i want to do the same job in bootloader space before loading the kernel i.e may be in grub source
Thank in advance
unix (out of box)
ACPI is a bit more involved than your laid out.
BIOS utilises a special x86 execution mode triggered via system management interrupts (SMI's). To notify Linux about ACPI events detected in SMI mode, the BIOS asserts a system control interrupt (SCI). Look at drivers/acpi/osl.c for the linux ACPI code that request this SCI/IRQ. and drivers/misc/thinkpad_acpi.c for example. The files under /proc/acpi/ are generated by the standard ACPI drivers, so use these to your advantage.
A core layer that provides ACPI essentials is written in AML a language that runs on a VM implemented by the OS AML intereter. ACPI drivers for interfacing standard components (fan, buttons etc)
If your machine is using OEM specific drivers the only way to use any ACPI information is via the /proc/acpi interface.
Use tools like: acpitool, and cat to probe for what you require I suggest is the best way to start. As well as looking through the ACPI source code under various drivers.