FreeNOS
|
Intel Advanced Configuration and Power Interface (ACPI). More...
#include <IntelACPI.h>
Data Structures | |
struct | ExtendedSystemTable |
Extended System Descriptor Table (XSDT) More... | |
struct | MultipleAPICTable |
Multiple APIC Description Table (MADT). More... | |
struct | MultipleAPICTableEntry |
Multiple APIC Description Table (MADT) entry. More... | |
struct | MultipleAPICTableProc |
Multiple APIC Description Table (MADT) processor entry. More... | |
struct | RootSystemDescriptor1 |
Root System Description Pointer (ACPI v1.0). More... | |
struct | RootSystemDescriptor2 |
Root System Description Pointer (ACPI v2.0) More... | |
struct | RootSystemTable |
Root System Descriptor Table (RSDT) More... | |
struct | SystemDescriptorHeader |
System Descriptor Header (ACPI v3.0) More... | |
Public Member Functions | |
IntelACPI () | |
Constructor. More... | |
virtual Result | initialize () |
Initialize the ACPI. More... | |
virtual Result | discover () |
Discover processors. More... | |
virtual Result | boot (CoreInfo *info) |
Boot a processor. More... | |
Public Member Functions inherited from CoreManager | |
CoreManager () | |
Constructor. More... | |
List< uint > & | getCores () |
Get list of core identities. More... | |
Private Types | |
enum | Registers |
Hardware registers. More... | |
Private Attributes | |
enum IntelACPI::Registers | __attribute__ |
IntelIO | m_bios |
I/O object for searching the RootSystemDescriptor. More... | |
IntelIO | m_rootIO |
Root/Extended SDT table I/O object. More... | |
Static Private Attributes | |
static const uint | RSDBase = 0x1000 |
Memory base address for searching the RootSystemDescriptor. More... | |
static const uint | RSDSize = MegaByte(1) - 0x1000 |
Size of the memory region for searching the RootSystemDescriptor. More... | |
static const uint | RootSystemSignature1 = 0x20445352 |
Signature to detect a valid RootSystemDescriptor (part 1). More... | |
static const uint | RootSystemSignature2 = 0x20525450 |
Signature to detect a valid RootSystemDescriptor (part 2). More... | |
static const u32 | RootSystemTableSignature = 0x54445352 |
Signature for the Root System Descriptor Table (RSDT). More... | |
static const u32 | ExtendedSystemTableSignature = 0x54445358 |
Signature for the Extended System Descriptor Table (XSDT). More... | |
static const u32 | MultipleAPICTableSignature = 0x43495041 |
Signature for the Multiple APIC Descriptor Table (MADT). More... | |
Additional Inherited Members | |
Public Types inherited from CoreManager | |
enum | Result { Success, IOError, NotFound, InvalidArgument } |
Result codes. More... | |
Protected Attributes inherited from CoreManager | |
List< uint > | m_cores |
List of core ids found. More... | |
Intel Advanced Configuration and Power Interface (ACPI).
Definition at line 39 of file IntelACPI.h.
|
private |
Hardware registers.
Definition at line 164 of file IntelACPI.h.
IntelACPI::IntelACPI | ( | ) |
|
private |
Extended System Descriptor Table (XSDT)
|
private |
Multiple APIC Description Table (MADT).
|
private |
Multiple APIC Description Table (MADT) entry.
|
private |
Multiple APIC Description Table (MADT) processor entry.
|
private |
Root System Description Pointer (ACPI v1.0).
|
private |
Root System Description Pointer (ACPI v2.0)
|
private |
Root System Descriptor Table (RSDT)
|
private |
System Descriptor Header (ACPI v3.0)
|
virtual |
Boot a processor.
info | CoreInfo object pointer. |
Implements CoreManager.
Definition at line 148 of file IntelACPI.cpp.
References CoreManager::IOError.
|
virtual |
Discover processors.
Implements CoreManager.
Definition at line 97 of file IntelACPI.cpp.
References List< T >::clear(), DEBUG, IntelACPI::RootSystemTable::entry, IntelACPI::ExtendedSystemTable::entry, ExtendedSystemTableSignature, IO::getBase(), IntelACPI::RootSystemTable::header, IntelACPI::ExtendedSystemTable::header, IntelACPI::SystemDescriptorHeader::length, CoreManager::m_cores, m_rootIO, IO::map(), MultipleAPICTableSignature, PAGESIZE, RootSystemTableSignature, scanAPIC(), IntelACPI::SystemDescriptorHeader::signature, CoreManager::Success, and IO::unmap().
Referenced by IntelCoreServer::discoverCores().
|
virtual |
Initialize the ACPI.
Implements CoreManager.
Definition at line 27 of file IntelACPI.cpp.
References DEBUG, IO::getBase(), m_bios, m_rootIO, IO::map(), CoreManager::NotFound, NOTICE, PAGESIZE, IntelACPI::RootSystemDescriptor1::revision, RootSystemSignature1, RootSystemSignature2, RSDSize, IntelACPI::RootSystemDescriptor1::rsdtAddress, IntelACPI::RootSystemDescriptor1::signature, CoreManager::Success, IntelACPI::RootSystemDescriptor2::xsdtAddress, and ZERO.
Referenced by IntelCoreServer::discoverCores().
|
private |
Scan for cores in the APIC tables.
Definition at line 66 of file IntelACPI.cpp.
References IntelACPI::MultipleAPICTableProc::apicId, List< T >::append(), DEBUG, entry, IntelACPI::MultipleAPICTable::entry, IntelACPI::MultipleAPICTable::header, IntelACPI::SystemDescriptorHeader::length, CoreManager::m_cores, and CoreManager::Success.
Referenced by discover().
|
private |
|
staticprivate |
Signature for the Extended System Descriptor Table (XSDT).
Definition at line 59 of file IntelACPI.h.
Referenced by discover().
|
private |
I/O object for searching the RootSystemDescriptor.
Definition at line 210 of file IntelACPI.h.
Referenced by initialize(), and IntelACPI().
|
private |
Root/Extended SDT table I/O object.
Definition at line 213 of file IntelACPI.h.
Referenced by discover(), and initialize().
|
staticprivate |
Signature for the Multiple APIC Descriptor Table (MADT).
Definition at line 62 of file IntelACPI.h.
Referenced by discover().
|
staticprivate |
Signature to detect a valid RootSystemDescriptor (part 1).
Definition at line 50 of file IntelACPI.h.
Referenced by initialize().
|
staticprivate |
Signature to detect a valid RootSystemDescriptor (part 2).
Definition at line 53 of file IntelACPI.h.
Referenced by initialize().
|
staticprivate |
Signature for the Root System Descriptor Table (RSDT).
Definition at line 56 of file IntelACPI.h.
Referenced by discover().
|
staticprivate |
Memory base address for searching the RootSystemDescriptor.
Definition at line 44 of file IntelACPI.h.
Referenced by IntelACPI().
Size of the memory region for searching the RootSystemDescriptor.
Definition at line 47 of file IntelACPI.h.
Referenced by initialize(), and IntelACPI().