Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
dynsysres.c
Abstract:
This module contain functions which support dynamic system resources e.g. processors, memory, and I/O. Among other things, it will contain code necessary to configure the OS for the 'capacity' of a partition rather than the boot resources.
Author:
Adam Glass
Environment:
Kernel mode only.
Revision History:
--*/
#include "halp.h"
#include "acpitabl.h"
#include "xxacpi.h"
#if defined(_WIN64) && !defined(_AMD64_)
#define HalpGetAcpiTablePhase0 HalpGetAcpiTable
#endif
PHYSICAL_ADDRESS HalpMaxHotPlugMemoryAddress;
VOID HalpGetHotPlugMemoryInfo( IN PLOADER_PARAMETER_BLOCK LoaderBlock ) { PHYSICAL_ADDRESS Extent; PACPI_SRAT_ENTRY SratEntry; PACPI_SRAT_ENTRY SratEnd; PACPI_SRAT SratTable;
SratTable = HalpGetAcpiTablePhase0(LoaderBlock, ACPI_SRAT_SIGNATURE); if (SratTable == NULL) { return; }
//
// The Static Resource Affinity Table (SRAT) exists.
//
// Scan it to determine if there are any hot plug memory regions.
//
SratEnd = (PACPI_SRAT_ENTRY)(((PUCHAR)SratTable) + SratTable->Header.Length); for (SratEntry = (PACPI_SRAT_ENTRY)(SratTable + 1); SratEntry < SratEnd; SratEntry = (PACPI_SRAT_ENTRY)(((PUCHAR) SratEntry) + SratEntry->Length)) { switch (SratEntry->Type) { case SratMemory: Extent.QuadPart = SratEntry->MemoryAffinity.Base.QuadPart + SratEntry->MemoryAffinity.Length; if (SratEntry->MemoryAffinity.Flags.HotPlug && SratEntry->MemoryAffinity.Flags.Enabled && (Extent.QuadPart > HalpMaxHotPlugMemoryAddress.QuadPart)) { HalpMaxHotPlugMemoryAddress = Extent; } break; } } }
VOID HalpDynamicSystemResourceConfiguration( IN PLOADER_PARAMETER_BLOCK LoaderBlock ) { HalpGetHotPlugMemoryInfo(LoaderBlock); }
|