/** @file
  Provides a service to retrieve a pointer to the EFI Runtime Services Table.

  This library does not contain any functions or macros.  It simply exports the
  global variable gRT that is a pointer to the EFI Runtime Services Table as defined
  in the UEFI Specification.  The global variable gRT must be preinitialized to NULL.
  The library constructor must set gRT to point at the EFI Runtime Services Table so
  it is available at the module's entry point. Since there is overhead in initializing
  this global variable, only those modules that actually require access to the EFI
  Runtime Services Table should use this library.
  Only available to DXE and UEFI module types.

Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

///
/// Cached copy of the EFI Runtime Services Table
///
extern EFI_RUNTIME_SERVICES  *gRT;
