]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Dxe/ArchProtocol/Metronome.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Dxe / ArchProtocol / Metronome.h
diff --git a/OldMdePkg/Include/Dxe/ArchProtocol/Metronome.h b/OldMdePkg/Include/Dxe/ArchProtocol/Metronome.h
new file mode 100644 (file)
index 0000000..c4a1f71
--- /dev/null
@@ -0,0 +1,98 @@
+/** @file\r
+  Metronome Architectural Protocol as defined in DXE CIS\r
+\r
+  This code abstracts the DXE core to provide delay services.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  Metronome.h\r
+\r
+  @par Revision Reference:\r
+  Version 0.91B.\r
+\r
+**/\r
+\r
+#ifndef __ARCH_PROTOCOL_METRONOME_H__\r
+#define __ARCH_PROTOCOL_METRONOME_H__\r
+\r
+//\r
+// Global ID for the Metronome Architectural Protocol\r
+//\r
+#define EFI_METRONOME_ARCH_PROTOCOL_GUID \\r
+  { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
+\r
+//\r
+// Declare forward reference for the Metronome Architectural Protocol\r
+//\r
+typedef struct _EFI_METRONOME_ARCH_PROTOCOL   EFI_METRONOME_ARCH_PROTOCOL;\r
+\r
+/**\r
+  The WaitForTick() function waits for the number of ticks specified by \r
+  TickNumber from a known time source in the platform.  If TickNumber of \r
+  ticks are detected, then EFI_SUCCESS is returned.  The actual time passed \r
+  between entry of this function and the first tick is between 0 and \r
+  TickPeriod 100 nS units.  If you want to guarantee that at least TickPeriod \r
+  time has elapsed, wait for two ticks.  This function waits for a hardware \r
+  event to determine when a tick occurs.  It is possible for interrupt \r
+  processing, or exception processing to interrupt the execution of the \r
+  WaitForTick() function.  Depending on the hardware source for the ticks, it \r
+  is possible for a tick to be missed.  This function cannot guarantee that \r
+  ticks will not be missed.  If a timeout occurs waiting for the specified \r
+  number of ticks, then EFI_TIMEOUT is returned.\r
+\r
+  @param  This             The EFI_METRONOME_ARCH_PROTOCOL instance.\r
+  @param  TickNumber       Number of ticks to wait.\r
+\r
+  @retval EFI_SUCCESS           The wait for the number of ticks specified by TickNumber\r
+                                succeeded.\r
+  @retval EFI_TIMEOUT           A timeout occurred waiting for the specified number of ticks.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_METRONOME_WAIT_FOR_TICK) (\r
+   IN EFI_METRONOME_ARCH_PROTOCOL   *This,\r
+   IN UINT32                        TickNumber\r
+  );\r
+\r
+//\r
+//\r
+\r
+/**\r
+  Interface stucture for the Metronome Architectural Protocol.\r
+\r
+  @par Protocol Description:\r
+  This protocol provides access to a known time source in the platform to the\r
+  core.  The core uses this known time source to produce core services that \r
+  require calibrated delays.  \r
+\r
+  @param WaitForTick\r
+  Waits for a specified number of ticks from a known time source \r
+  in the platform.  The actual time passed between entry of this \r
+  function and the first tick is between 0 and TickPeriod 100 nS \r
+  units.  If you want to guarantee that at least TickPeriod time \r
+  has elapsed, wait for two ticks.\r
+\r
+  @param TickPeriod\r
+  The period of platform's known time source in 100 nS units.  \r
+  This value on any platform must be at least 10 uS, and must not \r
+  exceed 200 uS.  The value in this field is a constant that must \r
+  not be modified after the Metronome architectural protocol is \r
+  installed.  All consumers must treat this as a read-only field.\r
+\r
+**/\r
+struct _EFI_METRONOME_ARCH_PROTOCOL {\r
+  EFI_METRONOME_WAIT_FOR_TICK  WaitForTick;\r
+  UINT32                       TickPeriod;\r
+};\r
+\r
+extern EFI_GUID gEfiMetronomeArchProtocolGuid;\r
+\r
+#endif\r