summaryrefslogtreecommitdiff
path: root/EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h')
-rw-r--r--EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h b/EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h
new file mode 100644
index 0000000..822ad5f
--- /dev/null
+++ b/EDK/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueTimerLib.h
@@ -0,0 +1,130 @@
+/*++
+
+Copyright (c) 2004 - 2011, 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:
+
+ EdkIIGlueTimerLib.h
+
+Abstract:
+
+ Public header file for Timer Lib
+
+--*/
+
+#ifndef __EDKII_GLUE_TIMER_LIB_H__
+#define __EDKII_GLUE_TIMER_LIB_H__
+
+/**
+ Stalls the CPU for at least the given number of microseconds.
+
+ Stalls the CPU for the number of microseconds specified by MicroSeconds.
+
+ @param MicroSeconds The minimum number of microseconds to delay.
+
+ @return MicroSeconds
+
+**/
+UINTN
+EFIAPI
+MicroSecondDelay (
+ IN UINTN MicroSeconds
+ );
+
+/**
+ Stalls the CPU for at least the given number of nanoseconds.
+
+ Stalls the CPU for the number of nanoseconds specified by NanoSeconds.
+
+ @param NanoSeconds The minimum number of nanoseconds to delay.
+
+ @return NanoSeconds
+
+**/
+UINTN
+EFIAPI
+NanoSecondDelay (
+ IN UINTN NanoSeconds
+ );
+
+/**
+ Retrieves the current value of a 64-bit free running performance counter.
+
+ Retrieves the current value of a 64-bit free running performance counter. The
+ counter can either count up by 1 or count down by 1. If the physical
+ performance counter counts by a larger increment, then the counter values
+ must be translated. The properties of the counter can be retrieved from
+ GetPerformanceCounterProperties().
+
+ @return The current value of the free running performance counter.
+
+**/
+UINT64
+EFIAPI
+GetPerformanceCounter (
+ VOID
+ );
+
+/**
+ Retrieves the 64-bit frequency in Hz and the range of performance counter
+ values.
+
+ If StartValue is not NULL, then the value that the performance counter starts
+ with immediately after is it rolls over is returned in StartValue. If
+ EndValue is not NULL, then the value that the performance counter end with
+ immediately before it rolls over is returned in EndValue. The 64-bit
+ frequency of the performance counter in Hz is always returned. If StartValue
+ is less than EndValue, then the performance counter counts up. If StartValue
+ is greater than EndValue, then the performance counter counts down. For
+ example, a 64-bit free running counter that counts up would have a StartValue
+ of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter
+ that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0.
+
+ @param StartValue The value the performance counter starts with when it
+ rolls over.
+ @param EndValue The value that the performance counter ends with before
+ it rolls over.
+
+ @return The frequency in Hz.
+
+**/
+UINT64
+EFIAPI
+GetPerformanceCounterProperties (
+ IN UINT64 *StartValue, OPTIONAL
+ IN UINT64 *EndValue OPTIONAL
+ );
+
+/**
+ Converts TSC value into nano second value.
+
+ @param TimeStamp - TSC timer ticker
+
+ @return UINT64 value in naosecond unit converted from TSC ticker
+
+**/
+UINT64
+GetTimeInNanoSec (
+ UINT64 Timestamp
+ );
+
+/**
+ Retrieves current APIC ID.
+
+ @return UINT32 value of APIC ID
+
+**/
+UINT32
+GetApicId (
+ VOID
+ );
+
+#endif \ No newline at end of file