summaryrefslogtreecommitdiff
path: root/UefiCpuPkg/Include/Library
diff options
context:
space:
mode:
authorrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>2010-08-26 05:58:42 +0000
committerrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>2010-08-26 05:58:42 +0000
commitae40aef1fb4f5f34e5273b6fd5d4103bf6c7dd2d (patch)
treeded45f7756c7ab9a95b7d06e0e374a935f6f81d7 /UefiCpuPkg/Include/Library
parent2ca7eca448e914c5c21cac5ba3832e09b4b163e8 (diff)
downloadedk2-platforms-ae40aef1fb4f5f34e5273b6fd5d4103bf6c7dd2d.tar.xz
Improve Local APIC library class. Add new library APIs: GetApicVersion(), SendFixedIpi(), SendFixedIpiAllExcludingSelf(), GetApicTimerState(). Remove GetApicTimerDivisor (), its functionality can be covered by GetApicTimerState().
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10824 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UefiCpuPkg/Include/Library')
-rw-r--r--UefiCpuPkg/Include/Library/LocalApicLib.h66
1 files changed, 54 insertions, 12 deletions
diff --git a/UefiCpuPkg/Include/Library/LocalApicLib.h b/UefiCpuPkg/Include/Library/LocalApicLib.h
index 58e3474e88..d565dad96c 100644
--- a/UefiCpuPkg/Include/Library/LocalApicLib.h
+++ b/UefiCpuPkg/Include/Library/LocalApicLib.h
@@ -76,6 +76,45 @@ GetApicId (
);
/**
+ Get the value of the local APIC version register.
+
+ @return the value of the local APIC version register.
+**/
+UINT32
+EFIAPI
+GetApicVersion (
+ VOID
+ );
+
+/**
+ Send a Fixed IPI to a specified target processor.
+
+ This function returns after the IPI has been accepted by the target processor.
+
+ @param ApicId The local APIC ID of the target processor.
+ @param Vector The vector number of the interrupt being sent.
+**/
+VOID
+EFIAPI
+SendFixedIpi (
+ IN UINT32 ApicId,
+ IN UINT8 Vector
+ );
+
+/**
+ Send a Fixed IPI to all processors excluding self.
+
+ This function returns after the IPI has been accepted by the target processors.
+
+ @param Vector The vector number of the interrupt being sent.
+**/
+VOID
+EFIAPI
+SendFixedIpiAllExcludingSelf (
+ IN UINT8 Vector
+ );
+
+/**
Send a SMI IPI to a specified target processor.
This function returns after the IPI has been accepted by the target processor.
@@ -174,18 +213,6 @@ ProgramVirtualWireMode (
);
/**
- Get the divide value from the DCR (Divide Configuration Register) by which
- the processor's bus clock is divided to form the time base for the APIC timer.
-
- @return The divide value is one of 1,2,4,8,16,32,64,128.
-**/
-UINTN
-EFIAPI
-GetApicTimerDivisor (
- VOID
- );
-
-/**
Read the initial count value from the init-count register.
@return The initial count value read from the init-count register.
@@ -228,6 +255,21 @@ InitializeApicTimer (
);
/**
+ Get the state of the local APIC timer.
+
+ @param DivideValue Return the divide value for the DCR. It is one of 1,2,4,8,16,32,64,128.
+ @param PeriodicMode Return the timer mode. If TRUE, timer mode is peridoic. Othewise, timer mode is one-shot.
+ @param Vector Return the timer interrupt vector number.
+**/
+VOID
+EFIAPI
+GetApicTimerState (
+ OUT UINTN *DivideValue OPTIONAL,
+ OUT BOOLEAN *PeriodicMode OPTIONAL,
+ OUT UINT8 *Vector OPTIONAL
+ );
+
+/**
Enable the local APIC timer interrupt.
**/
VOID