+++ /dev/null
-/** @file\r
- Boot Device Selection Architectural Protocol as defined in DXE CIS\r
-\r
- When the DXE core is done it calls the BDS via this protocol.\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: Bds.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_BDS_H__\r
-#define __ARCH_PROTOCOL_BDS_H__\r
-\r
-//\r
-// Global ID for the BDS Architectural Protocol\r
-//\r
-#define EFI_BDS_ARCH_PROTOCOL_GUID \\r
- { 0x665E3FF6, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } }\r
-\r
-//\r
-// Declare forward reference for the BDS Architectural Protocol\r
-//\r
-typedef struct _EFI_BDS_ARCH_PROTOCOL EFI_BDS_ARCH_PROTOCOL;\r
-\r
-/**\r
- This function uses policy data from the platform to determine what operating \r
- system or system utility should be loaded and invoked. This function call \r
- also optionally make the use of user input to determine the operating system \r
- or system utility to be loaded and invoked. When the DXE Core has dispatched \r
- all the drivers on the dispatch queue, this function is called. This \r
- function will attempt to connect the boot devices required to load and invoke \r
- the selected operating system or system utility. During this process, \r
- additional firmware volumes may be discovered that may contain addition DXE \r
- drivers that can be dispatched by the DXE Core. If a boot device cannot be \r
- fully connected, this function calls the DXE Service Dispatch() to allow the \r
- DXE drivers from any newly discovered firmware volumes to be dispatched. \r
- Then the boot device connection can be attempted again. If the same boot \r
- device connection operation fails twice in a row, then that boot device has \r
- failed, and should be skipped. This function should never return.\r
-\r
- @param This The EFI_BDS_ARCH_PROTOCOL instance.\r
-\r
- @return None.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_BDS_ENTRY) (\r
- IN EFI_BDS_ARCH_PROTOCOL *This\r
- );\r
-\r
-/**\r
- Interface stucture for the BDS Architectural Protocol.\r
-\r
- @par Protocol Description:\r
- The EFI_BDS_ARCH_PROTOCOL transfers control from DXE to an operating \r
- system or a system utility. If there are not enough drivers initialized \r
- when this protocol is used to access the required boot device(s), then \r
- this protocol should add drivers to the dispatch queue and return control \r
- back to the dispatcher. Once the required boot devices are available, then \r
- the boot device can be used to load and invoke an OS or a system utility.\r
-\r
- @par Protocol Parameters:\r
- Entry - The entry point to BDS. This call does not take any parameters, \r
- and the return value can be ignored. If it returns, then the \r
- dispatcher must be invoked again, if it never returns, then an \r
- operating system or a system utility have been invoked.\r
-\r
-**/\r
-struct _EFI_BDS_ARCH_PROTOCOL {\r
- EFI_BDS_ENTRY Entry;\r
-};\r
-\r
-extern EFI_GUID gEfiBdsArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- CPU Architectural Protocol as defined in DXE CIS\r
-\r
- This code abstracts the DXE core from processor implementation details.\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: Cpu.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_CPU_H__\r
-#define __ARCH_PROTOCOL_CPU_H__\r
-\r
-\r
-#define EFI_CPU_ARCH_PROTOCOL_GUID \\r
- { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
-\r
-typedef struct _EFI_CPU_ARCH_PROTOCOL EFI_CPU_ARCH_PROTOCOL;\r
-\r
-typedef enum {\r
- EfiCpuFlushTypeWriteBackInvalidate,\r
- EfiCpuFlushTypeWriteBack,\r
- EfiCpuFlushTypeInvalidate,\r
- EfiCpuMaxFlushType\r
-} EFI_CPU_FLUSH_TYPE;\r
-\r
-typedef enum {\r
- EfiCpuInit,\r
- EfiCpuMaxInitType\r
-} EFI_CPU_INIT_TYPE;\r
-\r
-/**\r
- EFI_CPU_INTERRUPT_HANDLER that is called when a processor interrupt occurs.\r
-\r
- @param InterruptType Defines the type of interrupt or exception that \r
- occurred on the processor.This parameter is processor architecture specific.\r
- \r
- @param SystemContext A pointer to the processor context when \r
- the interrupt occurred on the processor.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(*EFI_CPU_INTERRUPT_HANDLER) (\r
- IN EFI_EXCEPTION_TYPE InterruptType,\r
- IN EFI_SYSTEM_CONTEXT SystemContext\r
- );\r
-\r
-/**\r
- This function flushes the range of addresses from Start to Start+Length \r
- from the processor's data cache. If Start is not aligned to a cache line \r
- boundary, then the bytes before Start to the preceding cache line boundary \r
- are also flushed. If Start+Length is not aligned to a cache line boundary, \r
- then the bytes past Start+Length to the end of the next cache line boundary \r
- are also flushed. The FlushType of EfiCpuFlushTypeWriteBackInvalidate must be \r
- supported. If the data cache is fully coherent with all DMA operations, then \r
- this function can just return EFI_SUCCESS. If the processor does not support \r
- flushing a range of the data cache, then the entire data cache can be flushed.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param Start The beginning physical address to flush from the processor's data\r
- cache.\r
- @param Length The number of bytes to flush from the processor's data cache. This\r
- function may flush more bytes than Length specifies depending upon\r
- the granularity of the flush operation that the processor supports.\r
- @param FlushType Specifies the type of flush operation to perform.\r
-\r
- @retval EFI_SUCCESS The address range from Start to Start+Length was flushed from\r
- the processor's data cache.\r
- @retval EFI_UNSUPPORTEDT The processor does not support the cache flush type specified\r
- by FlushType.\r
- @retval EFI_DEVICE_ERROR The address range from Start to Start+Length could not be flushed\r
- from the processor's data cache.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_FLUSH_DATA_CACHE) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- IN EFI_PHYSICAL_ADDRESS Start,\r
- IN UINT64 Length,\r
- IN EFI_CPU_FLUSH_TYPE FlushType\r
- );\r
-\r
-\r
-/**\r
- This function enables interrupt processing by the processor. \r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
-\r
- @retval EFI_SUCCESS Interrupts are enabled on the processor.\r
- @retval EFI_DEVICE_ERROR Interrupts could not be enabled on the processor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_ENABLE_INTERRUPT) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This\r
- );\r
-\r
-\r
-/**\r
- This function disables interrupt processing by the processor.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
-\r
- @retval EFI_SUCCESS Interrupts are disabled on the processor.\r
- @retval EFI_DEVICE_ERROR Interrupts could not be disabled on the processor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_DISABLE_INTERRUPT) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This\r
- );\r
-\r
-\r
-/**\r
- This function retrieves the processor's current interrupt state a returns it in \r
- State. If interrupts are currently enabled, then TRUE is returned. If interrupts \r
- are currently disabled, then FALSE is returned.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param State A pointer to the processor's current interrupt state. Set to TRUE if\r
- interrupts are enabled and FALSE if interrupts are disabled.\r
-\r
- @retval EFI_SUCCESS The processor's current interrupt state was returned in State.\r
- @retval EFI_INVALID_PARAMETER State is NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_GET_INTERRUPT_STATE) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- OUT BOOLEAN *State\r
- );\r
-\r
-\r
-/**\r
- This function generates an INIT on the processor. If this function succeeds, then the\r
- processor will be reset, and control will not be returned to the caller. If InitType is \r
- not supported by this processor, or the processor cannot programmatically generate an \r
- INIT without help from external hardware, then EFI_UNSUPPORTED is returned. If an error \r
- occurs attempting to generate an INIT, then EFI_DEVICE_ERROR is returned.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param InitType The type of processor INIT to perform.\r
-\r
- @retval EFI_SUCCESS The processor INIT was performed. This return code should never be seen.\r
- @retval EFI_UNSUPPORTED The processor INIT operation specified by InitType is not supported\r
- by this processor.\r
- @retval EFI_DEVICE_ERROR The processor INIT failed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_INIT) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- IN EFI_CPU_INIT_TYPE InitType\r
- );\r
-\r
-\r
-/**\r
- This function registers and enables the handler specified by InterruptHandler for a processor \r
- interrupt or exception type specified by InterruptType. If InterruptHandler is NULL, then the \r
- handler for the processor interrupt or exception type specified by InterruptType is uninstalled. \r
- The installed handler is called once for each processor interrupt or exception.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param InterruptType A pointer to the processor's current interrupt state. Set to TRUE if interrupts\r
- are enabled and FALSE if interrupts are disabled.\r
- @param InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called\r
- when a processor interrupt occurs. If this parameter is NULL, then the handler\r
- will be uninstalled.\r
-\r
- @retval EFI_SUCCESS The handler for the processor interrupt was successfully installed or uninstalled.\r
- @retval EFI_ALREADY_STARTED InterruptHandler is not NULL, and a handler for InterruptType was\r
- previously installed.\r
- @retval EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType was not\r
- previously installed.\r
- @retval EFI_UNSUPPORTED The interrupt specified by InterruptType is not supported.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_REGISTER_INTERRUPT_HANDLER) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- IN EFI_EXCEPTION_TYPE InterruptType,\r
- IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler\r
- );\r
-\r
-\r
-/**\r
- This function reads the processor timer specified by TimerIndex and returns it in TimerValue.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param TimerIndex Specifies which processor timer is to be returned in TimerValue. This parameter\r
- must be between 0 and NumberOfTimers-1.\r
- @param TimerValue Pointer to the returned timer value.\r
- @param TimerPeriod A pointer to the amount of time that passes in femtoseconds for each increment\r
- of TimerValue.\r
-\r
- @retval EFI_SUCCESS The processor timer value specified by TimerIndex was returned in TimerValue.\r
- @retval EFI_DEVICE_ERROR An error occurred attempting to read one of the processor's timers.\r
- @retval EFI_INVALID_PARAMETER TimerValue is NULL or TimerIndex is not valid.\r
- @retval EFI_UNSUPPORTED The processor does not have any readable timers.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_GET_TIMER_VALUE) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- IN UINT32 TimerIndex,\r
- OUT UINT64 *TimerValue,\r
- OUT UINT64 *TimerPeriod OPTIONAL\r
- );\r
-\r
-\r
-/**\r
- This function modifies the attributes for the memory region specified by BaseAddress and\r
- Length from their current attributes to the attributes specified by Attributes.\r
-\r
- @param This The EFI_CPU_ARCH_PROTOCOL instance.\r
- @param BaseAddress The physical address that is the start address of a memory region.\r
- @param Length The size in bytes of the memory region.\r
- @param Attributes The bit mask of attributes to set for the memory region.\r
-\r
- @retval EFI_SUCCESS The attributes were set for the memory region.\r
- @retval EFI_ACCESS_DENIED The attributes for the memory resource range specified by\r
- BaseAddress and Length cannot be modified.\r
- @retval EFI_INVALID_PARAMETER Length is zero.\r
- @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of\r
- the memory resource range.\r
- @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory\r
- resource range specified by BaseAddress and Length.\r
- The bit mask of attributes is not support for the memory resource\r
- range specified by BaseAddress and Length.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CPU_SET_MEMORY_ATTRIBUTES) (\r
- IN EFI_CPU_ARCH_PROTOCOL *This,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Attributes\r
- );\r
-\r
-\r
-/**\r
- @par Protocol Description:\r
- The EFI_CPU_ARCH_PROTOCOL is used to abstract processor-specific functions from the DXE\r
- Foundation. This includes flushing caches, enabling and disabling interrupts, hooking interrupt\r
- vectors and exception vectors, reading internal processor timers, resetting the processor, and\r
- determining the processor frequency.\r
-\r
- @param FlushDataCache\r
- Flushes a range of the processor's data cache. If the processor does \r
- not contain a data cache, or the data cache is fully coherent, then this \r
- function can just return EFI_SUCCESS. If the processor does not support \r
- flushing a range of addresses from the data cache, then the entire data \r
- cache must be flushed. \r
-\r
- @param EnableInterrupt Enables interrupt processing by the processor. \r
-\r
- @param DisableInterrupt Disables interrupt processing by the processor.\r
-\r
- @param GetInterruptState Retrieves the processor's current interrupt state.\r
-\r
- @param Init\r
- Generates an INIT on the processor. If a processor cannot programmatically \r
- generate an INIT without help from external hardware, then this function \r
- returns EFI_UNSUPPORTED.\r
-\r
- @param RegisterInterruptHandler\r
- Associates an interrupt service routine with one of the processor's interrupt \r
- vectors. This function is typically used by the EFI_TIMER_ARCH_PROTOCOL to \r
- hook the timer interrupt in a system. It can also be used by the debugger to \r
- hook exception vectors.\r
-\r
- @param GetTimerValue Returns the value of one of the processor's internal timers.\r
-\r
- @param SetMemoryAttributes Attempts to set the attributes of a memory region.\r
-\r
- @param NumberOfTimers\r
- The number of timers that are available in a processor. The value in this \r
- field is a constant that must not be modified after the CPU Architectural \r
- Protocol is installed. All consumers must treat this as a read-only field.\r
-\r
- @param DmaBufferAlignment\r
- The size, in bytes, of the alignment required for DMA buffer allocations. \r
- This is typically the size of the largest data cache line in the platform. \r
- The value in this field is a constant that must not be modified after the \r
- CPU Architectural Protocol is installed. All consumers must treat this as \r
- a read-only field.\r
-\r
-**/\r
-struct _EFI_CPU_ARCH_PROTOCOL {\r
- EFI_CPU_FLUSH_DATA_CACHE FlushDataCache;\r
- EFI_CPU_ENABLE_INTERRUPT EnableInterrupt;\r
- EFI_CPU_DISABLE_INTERRUPT DisableInterrupt;\r
- EFI_CPU_GET_INTERRUPT_STATE GetInterruptState;\r
- EFI_CPU_INIT Init;\r
- EFI_CPU_REGISTER_INTERRUPT_HANDLER RegisterInterruptHandler;\r
- EFI_CPU_GET_TIMER_VALUE GetTimerValue;\r
- EFI_CPU_SET_MEMORY_ATTRIBUTES SetMemoryAttributes;\r
- UINT32 NumberOfTimers;\r
- UINT32 DmaBufferAlignment;\r
-};\r
-\r
-extern EFI_GUID gEfiCpuArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @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
- \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
- \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
+++ /dev/null
-/** @file\r
- Monotonic Counter Architectural Protocol as defined in DXE CIS\r
-\r
- This code provides the services required to access the systems monotonic counter\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: MonotonicCounter.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_MONTONIC_COUNTER_H__\r
-#define __ARCH_PROTOCOL_MONTONIC_COUNTER_H__\r
-\r
-///\r
-/// Global ID for the Monotonic Counter Architectural Protocol\r
-///\r
-#define EFI_MONTONIC_COUNTER_ARCH_PROTOCOL_GUID \\r
- {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }\r
- \r
-extern EFI_GUID gEfiMonotonicCounterArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Real Time clock Architectural Protocol as defined in DXE CIS\r
-\r
- This code abstracts time and data functions. Used to provide\r
- Time and date related EFI runtime services.\r
-\r
- The GetTime (), SetTime (), GetWakeupTime (), and SetWakeupTime () EFI 1.0\r
- services are added to the EFI system table and the \r
- EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL_GUID protocol is registered with a NULL \r
- pointer.\r
-\r
- No CRC of the EFI system table is required, as it is done in the DXE core.\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: RealTimeClock.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_REAL_TIME_CLOCK_H__\r
-#define __ARCH_PROTOCOL_REAL_TIME_CLOCK_H__\r
-\r
-//\r
-// Global ID for the Real Time Clock Architectural Protocol\r
-//\r
-#define EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL_GUID \\r
- { 0x27CFAC87, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } }\r
-\r
-extern EFI_GUID gEfiRealTimeClockArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Reset Architectural Protocol as defined in the DXE CIS\r
-\r
- Used to provide ResetSystem runtime services\r
-\r
- The ResetSystem () EFI 1.0 service is added to the EFI system table and the \r
- EFI_RESET_ARCH_PROTOCOL_GUID protocol is registered with a NULL pointer.\r
-\r
- No CRC of the EFI system table is required, as it is done in the DXE core.\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: Reset.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_RESET_H__\r
-#define __ARCH_PROTOCOL_RESET_H__\r
-\r
-//\r
-// Global ID for the Reset Architectural Protocol\r
-//\r
-#define EFI_RESET_ARCH_PROTOCOL_GUID \\r
- { 0x27CFAC88, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } }\r
-\r
-extern EFI_GUID gEfiResetArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Runtime Architectural Protocol as defined in DXE CIS\r
-\r
- This code is used to produce the EFI 1.0 runtime virtual switch over\r
-\r
- This driver must add SetVirtualAddressMap () and ConvertPointer () to\r
- the EFI system table. This driver is not responcible for CRCing the \r
- EFI system table.\r
-\r
- This driver will add EFI_RUNTIME_ARCH_PROTOCOL_GUID protocol with a \r
- pointer to the Runtime Arch Protocol instance structure. The protocol\r
- member functions are used by the DXE core to export information need\r
- by this driver to produce the runtime transition to virtual mode\r
- calling.\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: Runtime.h\r
-\r
- @par Revision Reference:\r
- Version 0.90.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_RUNTIME_H__\r
-#define __ARCH_PROTOCOL_RUNTIME_H__\r
-\r
-//\r
-// Global ID for the Runtime Architectural Protocol\r
-//\r
-#define EFI_RUNTIME_ARCH_PROTOCOL_GUID \\r
- { 0x96d08253, 0x8483, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
-\r
-typedef struct _EFI_RUNTIME_ARCH_PROTOCOL EFI_RUNTIME_ARCH_PROTOCOL;\r
-\r
-/**\r
- When a SetVirtualAddressMap() is performed all the runtime images loaded by \r
- DXE must be fixed up with the new virtual address map. To facilitate this the \r
- Runtime Architectural Protocol needs to be informed of every runtime driver \r
- that is registered. All the runtime images loaded by DXE should be registered \r
- with this service by the DXE Core when ExitBootServices() is called. The \r
- images that are registered with this service must have successfully been \r
- loaded into memory with the Boot Service LoadImage(). As a result, no \r
- parameter checking needs to be performed.\r
-\r
- @param This The EFI_RUNTIME_ARCH_PROTOCOL instance.\r
- \r
- @param ImageBase Start of image that has been loaded in memory. It is either\r
- a pointer to the DOS or PE header of the image.\r
- \r
- @param ImageSize Size of the image in bytes.\r
- \r
- @param RelocationData Information about the fixups that were performed on ImageBase\r
- when it was loaded into memory. This information is needed\r
- when the virtual mode fix-ups are reapplied so that data that\r
- has been programmatically updated will not be fixed up. If\r
- code updates a global variable the code is responsible for\r
- fixing up the variable for virtual mode.\r
-\r
- @retval EFI_SUCCESS The ImageBase has been registered.\r
- \r
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to register ImageBase.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_RUNTIME_REGISTER_IMAGE) (\r
- IN EFI_RUNTIME_ARCH_PROTOCOL *This,\r
- IN EFI_PHYSICAL_ADDRESS ImageBase, \r
- IN UINTN ImageSize, \r
- IN VOID *RelocationData \r
- );\r
-\r
-\r
-/**\r
- This function is used to support the required runtime events. Currently only \r
- runtime events of type EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE needs to be \r
- registered with this service. All the runtime events that exist in the DXE \r
- Core should be registered with this service when ExitBootServices() is called. \r
- All the events that are registered with this service must have been created \r
- with the Boot Service CreateEvent(). As a result, no parameter checking needs \r
- to be performed.\r
-\r
- @param This The EFI_RUNTIME_ARCH_PROTOCOL instance.\r
- \r
- @param Type The same as Type passed into CreateEvent().\r
- \r
- @param NotifyTpl The same as NotifyTpl passed into CreateEvent().\r
- \r
- @param NotifyFunction The same as NotifyFunction passed into CreateEvent().\r
- \r
- @param NotifyContext The same as NotifyContext passed into CreateEvent().\r
- \r
- @param Event The EFI_EVENT returned by CreateEvent(). Event must be in\r
- runtime memory.\r
-\r
- @retval EFI_SUCCESS The Event has been registered.\r
- \r
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to register Event.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_RUNTIME_REGISTER_EVENT) (\r
- IN EFI_RUNTIME_ARCH_PROTOCOL *This,\r
- IN UINT32 Type,\r
- IN EFI_TPL NotifyTpl,\r
- IN EFI_EVENT_NOTIFY NotifyFunction,\r
- IN VOID *NotifyContext,\r
- IN EFI_EVENT *Event\r
- );\r
-\r
-//\r
-// Interface stucture for the Runtime Architectural Protocol\r
-//\r
-/**\r
- @par Protocol Description:\r
- The DXE driver that produces this protocol must be a runtime driver. This \r
- driver is responsible for initializing the SetVirtualAddressMap() and \r
- ConvertPointer() fields of the EFI Runtime Services Table and the \r
- CalculateCrc32() field of the EFI Boot Services Table. See the Runtime \r
- Services chapter and the Boot Services chapter for details on these services.\r
- After the two fields of the EFI Runtime Services Table and the one field of \r
- the EFI Boot Services Table have been initialized, the driver must install \r
- the EFI_RUNTIME_ARCH_PROTOCOL_GUID on a new handle with an EFI_RUNTIME_ARCH_ \r
- PROTOCOL interface pointer. The installation of this protocol informs the \r
- DXE core that the virtual memory services and the 32-bit CRC services are \r
- now available, and the DXE core must update the 32-bit CRC of the EFI Runtime \r
- Services Table and the 32-bit CRC of the EFI Boot Services Table.\r
-\r
- All runtime core services are provided by the EFI_RUNTIME_ARCH_PROTOCOL. \r
- This includes the support for registering runtime images that must be \r
- re-fixed up when a transition is made from physical mode to virtual mode. \r
- This protocol also supports all events that are defined to fire at runtime. \r
- This protocol also contains a CRC-32 function that will be used by the DXE \r
- core as a boot service. The EFI_RUNTIME_ARCH_PROTOCOL needs the CRC-32 \r
- function when a transition is made from physical mode to virtual mode and \r
- the EFI System Table and EFI Runtime Table are fixed up with virtual pointers.\r
-\r
- @param RegisterRuntimeImage\r
- Register a runtime image so it can be converted to virtual mode if the EFI Runtime Services \r
- SetVirtualAddressMap() is called.\r
-\r
- @param RegisterRuntimeEvent\r
- Register an event than needs to be notified at runtime. \r
-\r
-**/\r
-struct _EFI_RUNTIME_ARCH_PROTOCOL {\r
- EFI_RUNTIME_REGISTER_IMAGE RegisterImage;\r
- EFI_RUNTIME_REGISTER_EVENT RegisterEvent;\r
-};\r
-\r
-extern EFI_GUID gEfiRuntimeArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Security Architectural Protocol as defined in the DXE CIS\r
-\r
- Used to provide Security services. Specifically, dependening upon the \r
- authentication state of a discovered driver in a Firmware Volume, the \r
- portable DXE Core Dispatcher will call into the Security Architectural \r
- Protocol (SAP) with the authentication state of the driver.\r
-\r
- This call-out allows for OEM-specific policy decisions to be made, such\r
- as event logging for attested boots, locking flash in response to discovering\r
- an unsigned driver or failed signature check, or other exception response.\r
-\r
- The SAP can also change system behavior by having the DXE core put a driver\r
- in the Schedule-On-Request (SOR) state. This will allow for later disposition \r
- of the driver by platform agent, such as Platform BDS.\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: Security.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_SECURITY_H__\r
-#define __ARCH_PROTOCOL_SECURITY_H__\r
-\r
-//\r
-// Global ID for the Security Code Architectural Protocol\r
-//\r
-#define EFI_SECURITY_ARCH_PROTOCOL_GUID \\r
- { 0xA46423E3, 0x4617, 0x49f1, {0xB9, 0xFF, 0xD1, 0xBF, 0xA9, 0x11, 0x58, 0x39 } }\r
-\r
-typedef struct _EFI_SECURITY_ARCH_PROTOCOL EFI_SECURITY_ARCH_PROTOCOL;\r
-\r
-/**\r
- The EFI_SECURITY_ARCH_PROTOCOL (SAP) is used to abstract platform-specific \r
- policy from the DXE core response to an attempt to use a file that returns a \r
- given status for the authentication check from the section extraction protocol. \r
-\r
- The possible responses in a given SAP implementation may include locking \r
- flash upon failure to authenticate, attestation logging for all signed drivers, \r
- and other exception operations. The File parameter allows for possible logging \r
- within the SAP of the driver.\r
-\r
- If File is NULL, then EFI_INVALID_PARAMETER is returned.\r
-\r
- If the file specified by File with an authentication status specified by \r
- AuthenticationStatus is safe for the DXE Core to use, then EFI_SUCCESS is returned.\r
-\r
- If the file specified by File with an authentication status specified by \r
- AuthenticationStatus is not safe for the DXE Core to use under any circumstances, \r
- then EFI_ACCESS_DENIED is returned.\r
-\r
- If the file specified by File with an authentication status specified by \r
- AuthenticationStatus is not safe for the DXE Core to use right now, but it \r
- might be possible to use it at a future time, then EFI_SECURITY_VIOLATION is \r
- returned.\r
-\r
- @param This The EFI_SECURITY_ARCH_PROTOCOL instance.\r
- \r
- @param AuthenticationStatus This is the authentication type returned from the Section\r
- Extraction protocol. See the Section Extraction Protocol\r
- Specification for details on this type.\r
- \r
- @param File This is a pointer to the device path of the file that is\r
- being dispatched. This will optionally be used for logging.\r
-\r
- @retval EFI_SUCCESS The file specified by File did authenticate, and the\r
- platform policy dictates that the DXE Core may use File.\r
- \r
- @retval EFI_INVALID_PARAMETER Driver is NULL.\r
- \r
- @retval EFI_SECURITY_VIOLATION The file specified by File did not authenticate, and\r
- the platform policy dictates that File should be placed\r
- in the untrusted state. A file may be promoted from\r
- the untrusted to the trusted state at a future time\r
- with a call to the Trust() DXE Service.\r
- \r
- @retval EFI_ACCESS_DENIED The file specified by File did not authenticate, and\r
- the platform policy dictates that File should not be\r
- used for any purpose.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_SECURITY_FILE_AUTHENTICATION_STATE) (\r
- IN EFI_SECURITY_ARCH_PROTOCOL *This,\r
- IN UINT32 AuthenticationStatus,\r
- IN EFI_DEVICE_PATH_PROTOCOL *File\r
- )\r
-;\r
-\r
-//\r
-// Interface stucture for the Timer Architectural Protocol\r
-//\r
-/**\r
- @par Protocol Description:\r
-\r
- The EFI_SECURITY_ARCH_PROTOCOL is used to abstract platform-specific policy\r
- from the DXE core. This includes locking flash upon failure to authenticate, \r
- attestation logging, and other exception operations.\r
-\r
- The driver that produces the EFI_SECURITY_ARCH_PROTOCOL may also optionally \r
- install the EFI_SECURITY_POLICY_PROTOCOL_GUID onto a new handle with a NULL \r
- interface. The existence of this GUID in the protocol database means that \r
- the GUIDed Section Extraction Protocol should authenticate the contents of \r
- an Authentication Section. The expectation is that the GUIDed Section \r
- Extraction protocol will look for the existence of the EFI_SECURITY_POLICY_ \r
- PROTOCOL_GUID in the protocol database. If it exists, then the publication \r
- thereof is taken as an injunction to attempt an authentication of any section \r
- wrapped in an Authentication Section. See the Firmware File System \r
- Specification for details on the GUIDed Section Extraction Protocol and \r
- Authentication Sections.\r
-\r
- @par Protocol Parameters:\r
-\r
- FileAuthenticationState - This service is called upon fault with respect to \r
- the authentication of a section of a file.\r
-\r
-**/\r
-struct _EFI_SECURITY_ARCH_PROTOCOL {\r
- EFI_SECURITY_FILE_AUTHENTICATION_STATE FileAuthenticationState;\r
-};\r
-\r
-extern EFI_GUID gEfiSecurityArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Security Policy protocol as defined in the DXE CIS\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: SecurityPolicy.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef _SECURITY_POLICY_H_\r
-#define _SECURITY_POLICY_H_\r
-\r
-//\r
-// Security policy protocol GUID definition\r
-//\r
-#define EFI_SECURITY_POLICY_PROTOCOL_GUID \\r
- {0x78E4D245, 0xCD4D, 0x4a05, {0xA2, 0xBA, 0x47, 0x43, 0xE8, 0x6C, 0xFC, 0xAB} }\r
-\r
-extern EFI_GUID gEfiSecurityPolicyProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Status code Runtime Protocol as defined in the DXE CIS\r
-\r
- The StatusCode () Tiano service is added to the EFI system table and the \r
- EFI_STATUS_CODE_ARCH_PROTOCOL_GUID protocol is registered with a NULL \r
- pointer.\r
-\r
- No CRC of the EFI system table is required, as it is done in the DXE core.\r
-\r
- This code abstracts Status Code reporting.\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: StatusCode.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __STATUS_CODE_RUNTIME_PROTOCOL_H__\r
-#define __STATUS_CODE_RUNTIME_PROTOCOL_H__\r
-\r
-#define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID \\r
-{ 0xd2b2b828, 0x826, 0x48a7, { 0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0 } }\r
-\r
-/**\r
- Provides an interface that a software module can call to report a status code.\r
-\r
- @param Type Indicates the type of status code being reported.\r
- \r
- @param Value Describes the current status of a hardware or software entity.\r
- This included information about the class and subclass that is used to \r
- classify the entity as well as an operation.\r
- \r
- @param Instance The enumeration of a hardware or software entity within \r
- the system. Valid instance numbers start with 1.\r
- \r
- @param CallerId This optional parameter may be used to identify the caller.\r
- This parameter allows the status code driver to apply different rules to \r
- different callers.\r
- \r
- @param Data This optional parameter may be used to pass additional data.\r
-\r
- @retval EFI_SUCCESS The function completed successfully\r
- \r
- @retval EFI_DEVICE_ERROR The function should not be completed due to a device error.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS \r
-(EFIAPI *EFI_REPORT_STATUS_CODE) (\r
- IN EFI_STATUS_CODE_TYPE Type,\r
- IN EFI_STATUS_CODE_VALUE Value,\r
- IN UINT32 Instance,\r
- IN EFI_GUID *CallerId OPTIONAL,\r
- IN EFI_STATUS_CODE_DATA *Data OPTIONAL\r
- );\r
-\r
-/**\r
- @par Protocol Description:\r
- Provides the service required to report a status code to the platform firmware.\r
- This protocol must be produced by a runtime DXE driver and may be consumed \r
- only by the DXE Foundation.\r
-\r
- @param ReportStatusCode Emit a status code.\r
-\r
-**/\r
-typedef struct _EFI_STATUS_CODE_PROTOCOL {\r
- EFI_REPORT_STATUS_CODE ReportStatusCode;\r
-} EFI_STATUS_CODE_PROTOCOL;\r
-\r
-extern EFI_GUID gEfiStatusCodeRuntimeProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Timer Architectural Protocol as defined in the DXE CIS\r
-\r
- This code is used to provide the timer tick for the DXE core.\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: Timer.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_TIMER_H__\r
-#define __ARCH_PROTOCOL_TIMER_H__\r
-\r
-//\r
-// Global ID for the Timer Architectural Protocol\r
-//\r
-#define EFI_TIMER_ARCH_PROTOCOL_GUID \\r
- { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
-\r
-//\r
-// Declare forward reference for the Timer Architectural Protocol\r
-//\r
-typedef struct _EFI_TIMER_ARCH_PROTOCOL EFI_TIMER_ARCH_PROTOCOL;\r
-\r
-/**\r
- This function of this type is called when a timer interrupt fires. This \r
- function executes at TPL_HIGH_LEVEL. The DXE Core will register a funtion\r
- of tyis type to be called for the timer interrupt, so it can know how much \r
- time has passed. This information is used to signal timer based events. \r
-\r
- @param Time Time since the last timer interrupt in 100 ns units. This will\r
- typically be TimerPeriod, but if a timer interrupt is missed, and the\r
- EFI_TIMER_ARCH_PROTOCOL driver can detect missed interrupts, then Time\r
- will contain the actual amount of time since the last interrupt.\r
-\r
- None.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_TIMER_NOTIFY) (\r
- IN UINT64 Time\r
- );\r
-\r
-/**\r
- This function registers the handler NotifyFunction so it is called every time \r
- the timer interrupt fires. It also passes the amount of time since the last \r
- handler call to the NotifyFunction. If NotifyFunction is NULL, then the \r
- handler is unregistered. If the handler is registered, then EFI_SUCCESS is \r
- returned. If the CPU does not support registering a timer interrupt handler, \r
- then EFI_UNSUPPORTED is returned. If an attempt is made to register a handler \r
- when a handler is already registered, then EFI_ALREADY_STARTED is returned. \r
- If an attempt is made to unregister a handler when a handler is not registered, \r
- then EFI_INVALID_PARAMETER is returned. If an error occurs attempting to \r
- register the NotifyFunction with the timer interrupt, then EFI_DEVICE_ERROR \r
- is returned.\r
-\r
- @param This The EFI_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param NotifyFunction The function to call when a timer interrupt fires. This\r
- function executes at TPL_HIGH_LEVEL. The DXE Core will\r
- register a handler for the timer interrupt, so it can know\r
- how much time has passed. This information is used to\r
- signal timer based events. NULL will unregister the handler.\r
-\r
- @retval EFI_SUCCESS The timer handler was registered.\r
- \r
- @retval EFI_UNSUPPORTED The platform does not support timer interrupts.\r
- \r
- @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a handler is already\r
- registered.\r
- \r
- @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a handler was not\r
- previously registered.\r
- \r
- @retval EFI_DEVICE_ERROR The timer handler could not be registered.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TIMER_REGISTER_HANDLER) (\r
- IN EFI_TIMER_ARCH_PROTOCOL *This,\r
- IN EFI_TIMER_NOTIFY NotifyFunction\r
-);\r
-\r
-/**\r
- This function adjusts the period of timer interrupts to the value specified \r
- by TimerPeriod. If the timer period is updated, then the selected timer \r
- period is stored in EFI_TIMER.TimerPeriod, and EFI_SUCCESS is returned. If \r
- the timer hardware is not programmable, then EFI_UNSUPPORTED is returned. \r
- If an error occurs while attempting to update the timer period, then the \r
- timer hardware will be put back in its state prior to this call, and \r
- EFI_DEVICE_ERROR is returned. If TimerPeriod is 0, then the timer interrupt \r
- is disabled. This is not the same as disabling the CPU's interrupts. \r
- Instead, it must either turn off the timer hardware, or it must adjust the \r
- interrupt controller so that a CPU interrupt is not generated when the timer \r
- interrupt fires. \r
-\r
- @param This The EFI_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param TimerPeriod The rate to program the timer interrupt in 100 nS units. If\r
- the timer hardware is not programmable, then EFI_UNSUPPORTED is\r
- returned. If the timer is programmable, then the timer period\r
- will be rounded up to the nearest timer period that is supported\r
- by the timer hardware. If TimerPeriod is set to 0, then the\r
- timer interrupts will be disabled.\r
-\r
- @retval EFI_SUCCESS The timer period was changed.\r
- \r
- @retval EFI_UNSUPPORTED The platform cannot change the period of the timer interrupt.\r
- \r
- @retval EFI_DEVICE_ERROR The timer period could not be changed due to a device error.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TIMER_SET_TIMER_PERIOD) (\r
- IN EFI_TIMER_ARCH_PROTOCOL *This,\r
- IN UINT64 TimerPeriod\r
- );\r
-\r
-/**\r
- This function retrieves the period of timer interrupts in 100 ns units, \r
- returns that value in TimerPeriod, and returns EFI_SUCCESS. If TimerPeriod \r
- is NULL, then EFI_INVALID_PARAMETER is returned. If a TimerPeriod of 0 is \r
- returned, then the timer is currently disabled.\r
-\r
- @param This The EFI_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param TimerPeriod A pointer to the timer period to retrieve in 100 ns units. If\r
- 0 is returned, then the timer is currently disabled.\r
-\r
- @retval EFI_SUCCESS The timer period was returned in TimerPeriod.\r
- \r
- @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TIMER_GET_TIMER_PERIOD) (\r
- IN EFI_TIMER_ARCH_PROTOCOL *This,\r
- OUT UINT64 *TimerPeriod\r
- );\r
-\r
-/**\r
- This function generates a soft timer interrupt. If the platform does not support soft \r
- timer interrupts, then EFI_UNSUPPORTED is returned. Otherwise, EFI_SUCCESS is returned. \r
- If a handler has been registered through the EFI_TIMER_ARCH_PROTOCOL.RegisterHandler() \r
- service, then a soft timer interrupt will be generated. If the timer interrupt is \r
- enabled when this service is called, then the registered handler will be invoked. The \r
- registered handler should not be able to distinguish a hardware-generated timer \r
- interrupt from a software-generated timer interrupt.\r
-\r
- @param This The EFI_TIMER_ARCH_PROTOCOL instance.\r
-\r
- @retval EFI_SUCCESS The soft timer interrupt was generated.\r
- \r
- @retval EFI_UNSUPPORTEDT The platform does not support the generation of soft timer interrupts.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TIMER_GENERATE_SOFT_INTERRUPT) (\r
- IN EFI_TIMER_ARCH_PROTOCOL *This\r
- );\r
-\r
-\r
-/**\r
- Interface stucture for the Timer Architectural Protocol.\r
-\r
- @par Protocol Description:\r
- This protocol provides the services to initialize a periodic timer \r
- interrupt, and to register a handler that is called each time the timer\r
- interrupt fires. It may also provide a service to adjust the rate of the\r
- periodic timer interrupt. When a timer interrupt occurs, the handler is \r
- passed the amount of time that has passed since the previous timer \r
- interrupt.\r
-\r
- @param RegisterHandler\r
- Registers a handler that will be called each time the \r
- timer interrupt fires. TimerPeriod defines the minimum \r
- time between timer interrupts, so TimerPeriod will also \r
- be the minimum time between calls to the registered \r
- handler.\r
-\r
- @param SetTimerPeriod\r
- Sets the period of the timer interrupt in 100 nS units. \r
- This function is optional, and may return EFI_UNSUPPORTED. \r
- If this function is supported, then the timer period will \r
- be rounded up to the nearest supported timer period.\r
-\r
- @param GetTimerPeriod\r
- Retrieves the period of the timer interrupt in 100 nS units.\r
-\r
- @param GenerateSoftInterrupt\r
- Generates a soft timer interrupt that simulates the firing of \r
- the timer interrupt. This service can be used to invoke the \r
- registered handler if the timer interrupt has been masked for \r
- a period of time.\r
-\r
-**/\r
-struct _EFI_TIMER_ARCH_PROTOCOL {\r
- EFI_TIMER_REGISTER_HANDLER RegisterHandler;\r
- EFI_TIMER_SET_TIMER_PERIOD SetTimerPeriod;\r
- EFI_TIMER_GET_TIMER_PERIOD GetTimerPeriod;\r
- EFI_TIMER_GENERATE_SOFT_INTERRUPT GenerateSoftInterrupt;\r
-};\r
-\r
-extern EFI_GUID gEfiTimerArchProtocolGuid;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Variable Architectural Protocol as defined in the DXE CIS\r
-\r
- This code is used to produce the EFI 1.0 runtime variable services\r
-\r
- The GetVariable (), GetNextVariableName (), and SetVariable () EFI 1.0 \r
- services are added to the EFI system table and the \r
- EFI_VARIABLE_ARCH_PROTOCOL_GUID protocol is registered with a NULL pointer.\r
-\r
- No CRC of the EFI system table is required, as it is done in the DXE core.\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: Variable.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_VARIABLE_ARCH_H__\r
-#define __ARCH_PROTOCOL_VARIABLE_ARCH_H__\r
-\r
-//\r
-// Global ID for the Variable Architectural Protocol\r
-//\r
-#define EFI_VARIABLE_ARCH_PROTOCOL_GUID \\r
- { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
-\r
-extern EFI_GUID gEfiVariableArchProtocolGuid;\r
-\r
-#endif \r
+++ /dev/null
-/** @file\r
- Variable Write Architectural Protocol as defined in the DXE CIS\r
-\r
- This code is used to produce the EFI 1.0 runtime variable services\r
-\r
- The SetVariable () EFI 1.0 services may be updated to the EFI system table and the \r
- EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID protocol is registered with a NULL pointer.\r
-\r
- No CRC of the EFI system table is required, as it is done in the DXE core.\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: VariableWrite.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__\r
-#define __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__\r
-\r
-//\r
-// Global ID for the Variable Write Architectural Protocol\r
-//\r
-#define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \\r
- { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53 } }\r
-\r
-extern EFI_GUID gEfiVariableWriteArchProtocolGuid;\r
-\r
-#endif \r
+++ /dev/null
-/** @file\r
- Watchdog Timer Architectural Protocol as defined in the DXE CIS\r
-\r
- Used to provide system watchdog timer 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: WatchdogTimer.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\r
-\r
-**/\r
-\r
-#ifndef __ARCH_PROTOCOL_WATCHDOG_TIMER_H__\r
-#define __ARCH_PROTOCOL_WATCHDOG_TIMER_H__\r
-\r
-//\r
-// Global ID for the Watchdog Timer Architectural Protocol\r
-//\r
-#define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \\r
- { 0x665E3FF5, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } }\r
-\r
-//\r
-// Declare forward reference for the Timer Architectural Protocol\r
-//\r
-typedef struct _EFI_WATCHDOG_TIMER_ARCH_PROTOCOL EFI_WATCHDOG_TIMER_ARCH_PROTOCOL;\r
-\r
-/**\r
- A function of this type is called when the watchdog timer fires if a \r
- handler has been registered.\r
-\r
- @param Time The time in 100 ns units that has passed since the watchdog\r
- timer was armed. For the notify function to be called, this\r
- must be greater than TimerPeriod.\r
-\r
- @return None.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_WATCHDOG_TIMER_NOTIFY) (\r
- IN UINT64 Time\r
- );\r
-\r
-/**\r
- This function registers a handler that is to be invoked when the watchdog \r
- timer fires. By default, the EFI_WATCHDOG_TIMER protocol will call the \r
- Runtime Service ResetSystem() when the watchdog timer fires. If a \r
- NotifyFunction is registered, then the NotifyFunction will be called before \r
- the Runtime Service ResetSystem() is called. If NotifyFunction is NULL, then \r
- the watchdog handler is unregistered. If a watchdog handler is registered, \r
- then EFI_SUCCESS is returned. If an attempt is made to register a handler \r
- when a handler is already registered, then EFI_ALREADY_STARTED is returned. \r
- If an attempt is made to uninstall a handler when a handler is not installed, \r
- then return EFI_INVALID_PARAMETER.\r
-\r
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param NotifyFunction The function to call when the watchdog timer fires. If this\r
- is NULL, then the handler will be unregistered.\r
-\r
- @retval EFI_SUCCESS The watchdog timer handler was registered or\r
- unregistered.\r
- \r
- @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a handler is already\r
- registered.\r
- \r
- @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a handler was not\r
- previously registered.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_REGISTER_HANDLER) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- IN EFI_WATCHDOG_TIMER_NOTIFY NotifyFunction\r
- );\r
-\r
-/**\r
- This function sets the amount of time to wait before firing the watchdog \r
- timer to TimerPeriod 100 nS units. If TimerPeriod is 0, then the watchdog \r
- timer is disabled.\r
-\r
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param TimerPeriod The amount of time in 100 nS units to wait before the watchdog\r
- timer is fired. If TimerPeriod is zero, then the watchdog\r
- timer is disabled.\r
-\r
- @retval EFI_SUCCESS The watchdog timer has been programmed to fire in Time\r
- 100 nS units.\r
- \r
- @retval EFI_DEVICE_ERROR A watchdog timer could not be programmed due to a device\r
- error.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_SET_TIMER_PERIOD) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- IN UINT64 TimerPeriod\r
- );\r
-\r
-/**\r
- This function retrieves the amount of time the system will wait before firing \r
- the watchdog timer. This period is returned in TimerPeriod, and EFI_SUCCESS \r
- is returned. If TimerPeriod is NULL, then EFI_INVALID_PARAMETER is returned.\r
-\r
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- \r
- @param TimerPeriod A pointer to the amount of time in 100 nS units that the system\r
- will wait before the watchdog timer is fired. If TimerPeriod of\r
- zero is returned, then the watchdog timer is disabled.\r
-\r
- @retval EFI_SUCCESS The amount of time that the system will wait before\r
- firing the watchdog timer was returned in TimerPeriod.\r
- \r
- @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.\r
-\r
-**/\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_GET_TIMER_PERIOD) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- OUT UINT64 *TimerPeriod\r
- );\r
-\r
-\r
-/**\r
- Interface stucture for the Watchdog Timer Architectural Protocol.\r
-\r
- @par Protocol Description:\r
- This protocol provides the services required to implement the Boot Service \r
- SetWatchdogTimer(). It provides a service to set the amount of time to wait \r
- before firing the watchdog timer, and it also provides a service to register \r
- a handler that is invoked when the watchdog timer fires. This protocol can \r
- implement the watchdog timer by using the event and timer Boot Services, or \r
- it can make use of custom hardware. When the watchdog timer fires, control \r
- will be passed to a handler if one has been registered. If no handler has \r
- been registered, or the registered handler returns, then the system will be \r
- reset by calling the Runtime Service ResetSystem().\r
-\r
- @param RegisterHandler - Registers a handler that is invoked when the watchdog \r
- timer fires.\r
-\r
- @param SetTimerPeriod - Sets the amount of time in 100 ns units to wait before the \r
- watchdog timer is fired. If this function is supported, \r
- then the watchdog timer period will be rounded up to the \r
- nearest supported watchdog timer period.\r
-\r
- @param GetTimerPeriod - Retrieves the amount of time in 100 ns units that the \r
- system will wait before the watchdog timer is fired.\r
-\r
-**/\r
-struct _EFI_WATCHDOG_TIMER_ARCH_PROTOCOL {\r
- EFI_WATCHDOG_TIMER_REGISTER_HANDLER RegisterHandler;\r
- EFI_WATCHDOG_TIMER_SET_TIMER_PERIOD SetTimerPeriod;\r
- EFI_WATCHDOG_TIMER_GET_TIMER_PERIOD GetTimerPeriod;\r
-};\r
-\r
-extern EFI_GUID gEfiWatchdogTimerArchProtocolGuid;\r
-\r
-#endif\r
-\r