Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame] | 1 | /** @file
|
| 2 | This library implement library class DxeServiceTableLib.
|
| 3 | It produce EFI_DXE_SERVICE pointer in global variable gDS in library's constructure.
|
| 4 |
|
| 5 | A DXE driver can use gDS pointer to access services in EFI_DXE_SERVICE, if this
|
| 6 | DXE driver declare that use DxeServicesTableLib library class and link to this
|
| 7 | library instance.
|
| 8 |
|
| 9 | Please attention this library instance can not be used util EFI_SYSTEM_TABLE was
|
| 10 | initialized.
|
| 11 |
|
| 12 | This library contains contruct function to retrieve EFI_DXE_SERIVCE, this construct
|
| 13 | function will be invoked in DXE driver's autogen file.
|
| 14 |
|
| 15 | Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
| 16 | This program and the accompanying materials
|
| 17 | are licensed and made available under the terms and conditions of the BSD License
|
| 18 | which accompanies this distribution. The full text of the license may be found at
|
| 19 | http://opensource.org/licenses/bsd-license.php.
|
| 20 |
|
| 21 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 22 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 23 |
|
| 24 | **/
|
| 25 |
|
| 26 | #include <PiDxe.h>
|
| 27 | #include <Guid/DxeServices.h>
|
| 28 | #include <Library/DxeServicesTableLib.h>
|
| 29 | #include <Library/DebugLib.h>
|
| 30 | #include <Library/UefiLib.h>
|
| 31 |
|
| 32 | //
|
| 33 | // Cache copy of the DXE Services Table
|
| 34 | //
|
| 35 | EFI_DXE_SERVICES *gDS = NULL;
|
| 36 |
|
| 37 | /**
|
| 38 | The constructor function caches the pointer of DXE Services Table.
|
| 39 |
|
| 40 | The constructor function caches the pointer of DXE Services Table.
|
| 41 | It will ASSERT() if that operation fails.
|
| 42 | It will ASSERT() if the pointer of DXE Services Table is NULL.
|
| 43 | It will always return EFI_SUCCESS.
|
| 44 |
|
| 45 | @param ImageHandle The firmware allocated handle for the EFI image.
|
| 46 | @param SystemTable A pointer to the EFI System Table.
|
| 47 |
|
| 48 | @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
|
| 49 |
|
| 50 | **/
|
| 51 | EFI_STATUS
|
| 52 | EFIAPI
|
| 53 | DxeServicesTableLibConstructor (
|
| 54 | IN EFI_HANDLE ImageHandle,
|
| 55 | IN EFI_SYSTEM_TABLE *SystemTable
|
| 56 | )
|
| 57 | {
|
| 58 | EFI_STATUS Status;
|
| 59 |
|
| 60 | //
|
| 61 | // Cache copy of the DXE Services Table
|
| 62 | //
|
| 63 | Status = EfiGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS);
|
| 64 | ASSERT_EFI_ERROR (Status);
|
| 65 | ASSERT (gDS != NULL);
|
| 66 |
|
| 67 | return Status;
|
| 68 | }
|