Changeset View
Changeset View
Standalone View
Standalone View
source/lib/sysdep/arch/x86_x64/apic.h
Show All 24 Lines | |||||
typedef u8 ApicId; // not necessarily contiguous values | typedef u8 ApicId; // not necessarily contiguous values | ||||
/** | /** | ||||
* @return APIC ID of the currently executing processor or zero if the | * @return APIC ID of the currently executing processor or zero if the | ||||
* platform does not have an xAPIC (i.e. 7th generation x86 or below). | * platform does not have an xAPIC (i.e. 7th generation x86 or below). | ||||
* | * | ||||
* rationale: the alternative of accessing the APIC mmio registers is not | * rationale: the alternative of accessing the APIC mmio registers is not | ||||
* feasible - mahaf_MapPhysicalMemory only works reliably on WinXP. we also | * feasible. We also don't want to interfere with the OS's constant use of | ||||
* don't want to interfere with the OS's constant use of the APIC registers. | * the APIC registers. | ||||
**/ | **/ | ||||
LIB_API ApicId GetApicId(); | LIB_API ApicId GetApicId(); | ||||
// if this returns false, apicId = contiguousId = processor. | // if this returns false, apicId = contiguousId = processor. | ||||
// otherwise, there are unspecified but bijective mappings between | // otherwise, there are unspecified but bijective mappings between | ||||
// apicId<->contiguousId and apicId<->processor. | // apicId<->contiguousId and apicId<->processor. | ||||
LIB_API bool AreApicIdsReliable(); | LIB_API bool AreApicIdsReliable(); | ||||
LIB_API size_t ProcessorFromApicId(ApicId apicId); | LIB_API size_t ProcessorFromApicId(ApicId apicId); | ||||
LIB_API size_t ContiguousIdFromApicId(ApicId apicId); | LIB_API size_t ContiguousIdFromApicId(ApicId apicId); | ||||
LIB_API ApicId ApicIdFromProcessor(size_t contiguousId); | LIB_API ApicId ApicIdFromProcessor(size_t contiguousId); | ||||
LIB_API ApicId ApicIdFromContiguousId(size_t contiguousId); | LIB_API ApicId ApicIdFromContiguousId(size_t contiguousId); | ||||
#endif // #ifndef INCLUDED_X86_X64_APIC | #endif // #ifndef INCLUDED_X86_X64_APIC |
Wildfire Games · Phabricator