Adjust directory structures.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3325 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		| @@ -0,0 +1,214 @@ | ||||
| /*++ | ||||
|  | ||||
| Copyright (c) 2006 - 2007, Intel Corporation                                                          | ||||
| All rights reserved. This program and the accompanying materials                           | ||||
| are licensed and made available under the terms and conditions of the BSD License          | ||||
| which accompanies this distribution.  The full text of the license may be found at         | ||||
| http://opensource.org/licenses/bsd-license.php                                             | ||||
|                                                                                            | ||||
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                      | ||||
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.              | ||||
|  | ||||
| Module Name: | ||||
|  | ||||
|   NullMemoryTest.c | ||||
|    | ||||
| Abstract: | ||||
|  | ||||
| --*/ | ||||
|  | ||||
|  | ||||
| #include "NullMemoryTest.h" | ||||
|  | ||||
| // | ||||
| // Module global members | ||||
| // | ||||
| UINT64                            mTestedSystemMemory = 0; | ||||
| UINT64                            mTotalSystemMemory  = 0; | ||||
| EFI_HANDLE                        mGenericMemoryTestHandle; | ||||
|  | ||||
| // | ||||
| // Driver entry here | ||||
| // | ||||
| EFI_GENERIC_MEMORY_TEST_PROTOCOL  mGenericMemoryTest = { | ||||
|   InitializeMemoryTest, | ||||
|   GenPerformMemoryTest, | ||||
|   GenMemoryTestFinished, | ||||
|   GenCompatibleRangeTest | ||||
| }; | ||||
|  | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GenericMemoryTestEntryPoint ( | ||||
|   IN  EFI_HANDLE           ImageHandle, | ||||
|   IN  EFI_SYSTEM_TABLE     *SystemTable | ||||
|   ) | ||||
| /*++ | ||||
|  | ||||
| Routine Description: | ||||
|  | ||||
|   The generic memory test driver's entry point, it can initialize private data | ||||
|   to default value | ||||
|  | ||||
| Arguments: | ||||
|  | ||||
|   ImageHandle of the loaded driver | ||||
|   Pointer to the System Table | ||||
|  | ||||
| Returns: | ||||
|  | ||||
|   Status | ||||
|  | ||||
|   EFI_SUCCESS           - Protocol successfully installed | ||||
|   EFI_OUT_OF_RESOURCES  - Can not allocate protocol data structure in base | ||||
|                           memory | ||||
|  | ||||
| --*/ | ||||
| { | ||||
|   EFI_STATUS  Status; | ||||
|  | ||||
|   // | ||||
|   // Install the protocol | ||||
|   // | ||||
|   Status = gBS->InstallProtocolInterface ( | ||||
|                   &mGenericMemoryTestHandle, | ||||
|                   &gEfiGenericMemTestProtocolGuid, | ||||
|                   EFI_NATIVE_INTERFACE, | ||||
|                   &mGenericMemoryTest | ||||
|                   ); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
| // | ||||
| // EFI_GENERIC_MEMORY_TEST_PROTOCOL implementation | ||||
| // | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| InitializeMemoryTest ( | ||||
|   IN EFI_GENERIC_MEMORY_TEST_PROTOCOL          *This, | ||||
|   IN  EXTENDMEM_COVERAGE_LEVEL                 Level, | ||||
|   OUT BOOLEAN                                  *RequireSoftECCInit | ||||
|   ) | ||||
| /*++ | ||||
|  | ||||
| Routine Description: | ||||
|  | ||||
| Arguments: | ||||
|  | ||||
| Returns: | ||||
|  | ||||
| --*/ | ||||
| { | ||||
|   UINTN                           NumberOfDescriptors; | ||||
|   EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemorySpaceMap; | ||||
|   UINTN                           Index; | ||||
|  | ||||
|   gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap); | ||||
|   for (Index = 0; Index < NumberOfDescriptors; Index++) { | ||||
|     if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved && | ||||
|         (MemorySpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) == | ||||
|           (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED) | ||||
|           ) { | ||||
|       gDS->RemoveMemorySpace ( | ||||
|             MemorySpaceMap[Index].BaseAddress, | ||||
|             MemorySpaceMap[Index].Length | ||||
|             ); | ||||
|  | ||||
|       gDS->AddMemorySpace ( | ||||
|             EfiGcdMemoryTypeSystemMemory, | ||||
|             MemorySpaceMap[Index].BaseAddress, | ||||
|             MemorySpaceMap[Index].Length, | ||||
|             MemorySpaceMap[Index].Capabilities &~ | ||||
|             (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME) | ||||
|             ); | ||||
|  | ||||
|       mTestedSystemMemory += MemorySpaceMap[Index].Length; | ||||
|       mTotalSystemMemory += MemorySpaceMap[Index].Length; | ||||
|     } else if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeSystemMemory) { | ||||
|       mTotalSystemMemory += MemorySpaceMap[Index].Length; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   FreePool (MemorySpaceMap); | ||||
|  | ||||
|   *RequireSoftECCInit = FALSE; | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
|  | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GenPerformMemoryTest ( | ||||
|   IN EFI_GENERIC_MEMORY_TEST_PROTOCOL          *This, | ||||
|   IN OUT UINT64                                *TestedMemorySize, | ||||
|   OUT UINT64                                   *TotalMemorySize, | ||||
|   OUT BOOLEAN                                  *ErrorOut, | ||||
|   IN BOOLEAN                                   TestAbort | ||||
|   ) | ||||
| /*++ | ||||
|  | ||||
| Routine Description: | ||||
|  | ||||
| Arguments: | ||||
|  | ||||
| Returns: | ||||
|  | ||||
| --*/ | ||||
| { | ||||
|   *ErrorOut         = FALSE; | ||||
|   *TestedMemorySize = mTestedSystemMemory; | ||||
|   *TotalMemorySize  = mTotalSystemMemory; | ||||
|  | ||||
|   return EFI_NOT_FOUND; | ||||
|  | ||||
| } | ||||
|  | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GenMemoryTestFinished ( | ||||
|   IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This | ||||
|   ) | ||||
| /*++ | ||||
|  | ||||
| Routine Description: | ||||
|  | ||||
| Arguments: | ||||
|  | ||||
| Returns: | ||||
|  | ||||
| --*/ | ||||
| { | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
|  | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GenCompatibleRangeTest ( | ||||
|   IN EFI_GENERIC_MEMORY_TEST_PROTOCOL          *This, | ||||
|   IN  EFI_PHYSICAL_ADDRESS                     StartAddress, | ||||
|   IN  UINT64                                   Length | ||||
|   ) | ||||
| /*++ | ||||
|  | ||||
| Routine Description: | ||||
|  | ||||
| Arguments: | ||||
|  | ||||
| Returns: | ||||
|  | ||||
| --*/ | ||||
| { | ||||
|   EFI_GCD_MEMORY_SPACE_DESCRIPTOR descriptor; | ||||
|  | ||||
|   gDS->GetMemorySpaceDescriptor (StartAddress, &descriptor); | ||||
|  | ||||
|   gDS->RemoveMemorySpace (StartAddress, Length); | ||||
|  | ||||
|   gDS->AddMemorySpace ( | ||||
|         EfiGcdMemoryTypeSystemMemory, | ||||
|         StartAddress, | ||||
|         Length, | ||||
|         descriptor.Capabilities &~(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME) | ||||
|         ); | ||||
|  | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user