#include <Protocol/GraphicsOutput.h> #include <Library/ImageDecoderLib.h> #include <Library/BaseLib.h> #include <Library/MemoryAllocationLib.h> #include <Library/DebugLib.h> typedef struct { UINT32 Signature; DECODE_IMAGE Decoder; LIST_ENTRY Link; } IMAGE_DECODER_ENTRY; #define IMAGE_DECODER_ENTRY_SIGNATURE SIGNATURE_32 ('i', 'm', 'g', 'd') #define IMAGE_DECODER_ENTRY_FROM_LINK(Link) \ CR (Link, IMAGE_DECODER_ENTRY, Link, IMAGE_DECODER_ENTRY_SIGNATURE) LIST_ENTRY mImageDecoderLibDecoders = INITIALIZE_LIST_HEAD_VARIABLE (mImageDecoderLibDecoders); /** Convert a graphics image to a callee allocated GOP blt buffer. @param ImageFormat Format of the image file. @param Image Pointer to image file. @param ImageSize Number of bytes in Image. @param GopBlt Buffer containing GOP version of Image. @param GopBltSize Size of GopBlt in bytes. @param PixelWidth Width of GopBlt/Image in pixels. @param PixelHeight Height of GopBlt/Image in pixels. @retval EFI_SUCCESS GopBlt and GopBltSize are returned. @retval EFI_INVALID_PARAMETER GopBlt or GopBltSize is NULL. @retval EFI_INVALID_PARAMETER Image is NULL or ImageSize is 0.
EFI_GUID mEfiSmmCpuIoGuid = EFI_SMM_CPU_IO_GUID; EFI_SMM_BASE_HELPER_READY_PROTOCOL *mSmmBaseHelperReady; EFI_SMM_SYSTEM_TABLE *mFrameworkSmst; UINTN mNumberOfProcessors; BOOLEAN mLocked = FALSE; BOOLEAN mPageTableHookEnabled; BOOLEAN mHookInitialized; UINT64 *mCpuStatePageTable; SPIN_LOCK mPFLock; UINT64 mPhyMask; VOID *mOriginalHandler; EFI_SMM_CPU_SAVE_STATE *mShadowSaveState; EFI_SMRAM_DESCRIPTOR *mSmramRanges; UINTN mSmramRangeCount; LIST_ENTRY mCallbackInfoListHead = INITIALIZE_LIST_HEAD_VARIABLE (mCallbackInfoListHead); CPU_SAVE_STATE_CONVERSION mCpuSaveStateConvTable[] = { {EFI_SMM_SAVE_STATE_REGISTER_LDTBASE , CPU_SAVE_STATE_GET_OFFSET(LDTBase)}, {EFI_SMM_SAVE_STATE_REGISTER_ES , CPU_SAVE_STATE_GET_OFFSET(ES)}, {EFI_SMM_SAVE_STATE_REGISTER_CS , CPU_SAVE_STATE_GET_OFFSET(CS)}, {EFI_SMM_SAVE_STATE_REGISTER_SS , CPU_SAVE_STATE_GET_OFFSET(SS)}, {EFI_SMM_SAVE_STATE_REGISTER_DS , CPU_SAVE_STATE_GET_OFFSET(DS)}, {EFI_SMM_SAVE_STATE_REGISTER_FS , CPU_SAVE_STATE_GET_OFFSET(FS)}, {EFI_SMM_SAVE_STATE_REGISTER_GS , CPU_SAVE_STATE_GET_OFFSET(GS)}, {EFI_SMM_SAVE_STATE_REGISTER_TR_SEL , CPU_SAVE_STATE_GET_OFFSET(TR)}, {EFI_SMM_SAVE_STATE_REGISTER_DR7 , CPU_SAVE_STATE_GET_OFFSET(DR7)}, {EFI_SMM_SAVE_STATE_REGISTER_DR6 , CPU_SAVE_STATE_GET_OFFSET(DR6)}, {EFI_SMM_SAVE_STATE_REGISTER_RAX , CPU_SAVE_STATE_GET_OFFSET(EAX)}, {EFI_SMM_SAVE_STATE_REGISTER_RBX , CPU_SAVE_STATE_GET_OFFSET(EBX)}, {EFI_SMM_SAVE_STATE_REGISTER_RCX , CPU_SAVE_STATE_GET_OFFSET(ECX)},
UINT64 Signature; EFI_FILE File; CHAR8 *FileName; UINT64 OpenMode; UINT32 Position; UINTN SemihostHandle; BOOLEAN IsRoot; EFI_FILE_INFO Info; } SEMIHOST_FCB; #define SEMIHOST_FCB_SIGNATURE SIGNATURE_32( 'S', 'H', 'F', 'C' ) #define SEMIHOST_FCB_FROM_THIS(a) CR(a, SEMIHOST_FCB, File, SEMIHOST_FCB_SIGNATURE) #define SEMIHOST_FCB_FROM_LINK(a) CR(a, SEMIHOST_FCB, Link, SEMIHOST_FCB_SIGNATURE); EFI_HANDLE gInstallHandle = NULL; LIST_ENTRY gFileList = INITIALIZE_LIST_HEAD_VARIABLE (gFileList); SEMIHOST_FCB * AllocateFCB ( VOID ) { SEMIHOST_FCB *Fcb = AllocateZeroPool (sizeof (SEMIHOST_FCB)); if (Fcb != NULL) { CopyMem (&Fcb->File, &gSemihostFsFile, sizeof (gSemihostFsFile)); Fcb->Signature = SEMIHOST_FCB_SIGNATURE; } return Fcb; }
EFI_SMM_PERIODIC_TIMER_DISPATCH2_PROTOCOL *gSmmPeriodicTimerDispatch2 = NULL; /// /// Pointer to a table of supported periodic SMI tick periods in 100 ns units /// sorted from largest to smallest terminated by a tick period value of 0. /// This table is allocated using AllocatePool() in the constructor and filled /// in based on the values returned from the SMM Periodic Timer Dispatch 2 Protocol /// function GetNextShorterInterval(). /// UINT64 *gSmiTickPeriodTable = NULL; /// /// Linked list of free periodic SMI handlers that this library can use. /// LIST_ENTRY gFreePeriodicSmiLibraryHandlers = INITIALIZE_LIST_HEAD_VARIABLE (gFreePeriodicSmiLibraryHandlers); /// /// Linked list of periodic SMI handlers that this library is currently managing. /// LIST_ENTRY gPeriodicSmiLibraryHandlers = INITIALIZE_LIST_HEAD_VARIABLE (gPeriodicSmiLibraryHandlers); /// /// Pointer to the periodic SMI handler that is currently being executed. /// Is set to NULL if no periodic SMI handler is currently being executed. /// PERIODIC_SMI_LIBRARY_HANDLER_CONTEXT *gActivePeriodicSmiLibraryHandler = NULL; /** Internal worker function that returns a pointer to the
(EFI_GET_WAKEUP_TIME) CoreEfiNotAvailableYetArg3, // GetWakeupTime (EFI_SET_WAKEUP_TIME) CoreEfiNotAvailableYetArg2, // SetWakeupTime (EFI_SET_VIRTUAL_ADDRESS_MAP) CoreEfiNotAvailableYetArg4, // SetVirtualAddressMap (EFI_CONVERT_POINTER) CoreEfiNotAvailableYetArg2, // ConvertPointer (EFI_GET_VARIABLE) CoreEfiNotAvailableYetArg5, // GetVariable (EFI_GET_NEXT_VARIABLE_NAME) CoreEfiNotAvailableYetArg3, // GetNextVariableName (EFI_SET_VARIABLE) CoreEfiNotAvailableYetArg5, // SetVariable (EFI_GET_NEXT_HIGH_MONO_COUNT) CoreEfiNotAvailableYetArg1, // GetNextHighMonotonicCount (EFI_RESET_SYSTEM) CoreEfiNotAvailableYetArg4, // ResetSystem (EFI_UPDATE_CAPSULE) CoreEfiNotAvailableYetArg3, // UpdateCapsule (EFI_QUERY_CAPSULE_CAPABILITIES) CoreEfiNotAvailableYetArg4, // QueryCapsuleCapabilities (EFI_QUERY_VARIABLE_INFO) CoreEfiNotAvailableYetArg4 // QueryVariableInfo }; EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate = { INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.ImageHead), INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.EventHead), // // Make sure Size != sizeof (EFI_MEMORY_DESCRIPTOR). This will // prevent people from having pointer math bugs in their code. // now you have to use *DescriptorSize to make things work. // sizeof (EFI_MEMORY_DESCRIPTOR) + sizeof (UINT64) - (sizeof (EFI_MEMORY_DESCRIPTOR) % sizeof (UINT64)), EFI_MEMORY_DESCRIPTOR_VERSION, 0, NULL, NULL, FALSE, FALSE };
**/ #include "PlatVarCleanup.h" VAR_ERROR_FLAG mLastVarErrorFlag = VAR_ERROR_FLAG_NO_ERROR; EDKII_VAR_CHECK_PROTOCOL *mVarCheck = NULL; /// /// The flag to indicate whether the platform has left the DXE phase of execution. /// BOOLEAN mEndOfDxe = FALSE; EFI_EVENT mPlatVarCleanupLibEndOfDxeEvent = NULL; LIST_ENTRY mUserVariableList = INITIALIZE_LIST_HEAD_VARIABLE (mUserVariableList); UINT16 mUserVariableCount = 0; UINT16 mMarkedUserVariableCount = 0; EFI_GUID mVariableCleanupHiiGuid = VARIABLE_CLEANUP_HII_GUID; CHAR16 mVarStoreName[] = L"VariableCleanup"; HII_VENDOR_DEVICE_PATH mVarCleanupHiiVendorDevicePath = { { { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { (UINT8) (sizeof (VENDOR_DEVICE_PATH)), (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) }
LIST_ENTRY Link; EDKII_IOMMU_OPERATION Operation; UINTN NumberOfBytes; UINTN NumberOfPages; EFI_PHYSICAL_ADDRESS CryptedAddress; EFI_PHYSICAL_ADDRESS PlainTextAddress; } MAP_INFO; // // List of MAP_INFO structures recycled by Unmap(). // // Recycled MAP_INFO structures are equally good for future recycling and // freeing. // STATIC LIST_ENTRY mRecycledMapInfos = INITIALIZE_LIST_HEAD_VARIABLE ( mRecycledMapInfos ); #define COMMON_BUFFER_SIG SIGNATURE_64 ('C', 'M', 'N', 'B', 'U', 'F', 'F', 'R') // // The following structure enables Map() and Unmap() to perform in-place // decryption and encryption, respectively, for BusMasterCommonBuffer[64] // operations, without dynamic memory allocation or release. // // Both COMMON_BUFFER_HEADER and COMMON_BUFFER_HEADER.StashBuffer are allocated // by AllocateBuffer() and released by FreeBuffer(). // #pragma pack (1) typedef struct { UINT64 Signature;
#include <PiSmm.h> #include <Library/SmmServicesTableLib.h> #include <Library/BaseLib.h> #include <Library/BaseMemoryLib.h> #include <Library/LockBoxLib.h> #include <Library/DebugLib.h> #include <Guid/SmmLockBox.h> #include "SmmLockBoxLibPrivate.h" /** We need handle this library carefully. Only one library instance will construct the environment. Below 2 global variable can only be used in constructor. They should NOT be used in any other library functions. **/ SMM_LOCK_BOX_CONTEXT mSmmLockBoxContext; LIST_ENTRY mLockBoxQueue = INITIALIZE_LIST_HEAD_VARIABLE (mLockBoxQueue); BOOLEAN mSmmConfigurationTableInstalled = FALSE; /** This function return SmmLockBox context from SMST. @return SmmLockBox context from SMST. **/ SMM_LOCK_BOX_CONTEXT * InternalGetSmmLockBoxContext ( VOID ) { UINTN Index;
1. Support two types diskette drive 1.44M drive and 2.88M drive (and now only support 1.44M) 2. Support two diskette drives 3. Use DMA channel 2 to transfer data 4. Do not use interrupt 5. Support diskette change line signal and write protect conforming to EFI driver model Revision History: --*/ #include "IsaFloppy.h" EFI_LIST_ENTRY gControllerHead = INITIALIZE_LIST_HEAD_VARIABLE(gControllerHead); // // ISA Floppy Driver Binding Protocol // EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver = { FdcControllerDriverSupported, FdcControllerDriverStart, FdcControllerDriverStop, 0xa, NULL, NULL }; EFI_STATUS EFIAPI
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. **/ #include "DatahubStatusCodeHandlerDxe.h" // // Initialize FIFO to cache records. // LIST_ENTRY mRecordsFifo = INITIALIZE_LIST_HEAD_VARIABLE (mRecordsFifo); LIST_ENTRY mRecordsBuffer = INITIALIZE_LIST_HEAD_VARIABLE (mRecordsBuffer); UINT32 mLogDataHubStatus = 0; EFI_EVENT mLogDataHubEvent; // // Cache data hub protocol. // EFI_DATA_HUB_PROTOCOL *mDataHubProtocol = NULL; /** Retrieve one record of from free record buffer. This record is removed from free record buffer. This function retrieves one record from free record buffer. If the pool has been exhausted, then new memory would be allocated for it.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include "DxeMain.h" #include "Handle.h" // // mProtocolDatabase - A list of all protocols in the system. (simple list for now) // gHandleList - A list of all the handles in the system // gProtocolDatabaseLock - Lock to protect the mProtocolDatabase // gHandleDatabaseKey - The Key to show that the handle has been created/modified // LIST_ENTRY mProtocolDatabase = INITIALIZE_LIST_HEAD_VARIABLE (mProtocolDatabase); LIST_ENTRY gHandleList = INITIALIZE_LIST_HEAD_VARIABLE (gHandleList); EFI_LOCK gProtocolDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); UINT64 gHandleDatabaseKey = 0; /** Acquire lock on gProtocolDatabaseLock. **/ VOID CoreAcquireProtocolLock ( VOID ) {
/** @file Global data used in memory service Copyright (c) 2006 - 2008, Intel Corporation. <BR> 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. **/ #include "DxeMain.h" // // MemoryLock - synchronizes access to the memory map and pool lists // EFI_LOCK gMemoryLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); // // MemoryMap - the current memory map // LIST_ENTRY gMemoryMap = INITIALIZE_LIST_HEAD_VARIABLE (gMemoryMap);
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> 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. **/ #include "PiSmmCpuDxeSmm.h" #define PAGE_TABLE_PAGES 8 #define ACC_MAX_BIT BIT3 LIST_ENTRY mPagePool = INITIALIZE_LIST_HEAD_VARIABLE (mPagePool); SPIN_LOCK mPFLock; BOOLEAN m1GPageTableSupport = FALSE; /** Check if 1-GByte pages is supported by processor or not. @retval TRUE 1-GByte pages is supported. @retval FALSE 1-GByte pages is not supported. **/ BOOLEAN Is1GPageSupport ( VOID ) {
as per the UEFI specification for memory allocation functions. By specifying Size as a 64-bit value and placing it immediately before Data, it ensures that Data will always be 8-byte aligned. On IA32 systems, this structure is 24 bytes long, excluding Data. On X64 systems, this structure is 32 bytes long, excluding Data. **/ typedef struct { LIST_ENTRY List; UINT32 Signature; UINT64 Size; CHAR8 Data[1]; } CPOOL_HEAD; // List of memory allocated by malloc/calloc/etc. static LIST_ENTRY MemPoolHead = INITIALIZE_LIST_HEAD_VARIABLE(MemPoolHead); /****************************/ /** The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate. This implementation uses the UEFI memory allocation boot services to get a region of memory that is 8-byte aligned and of the specified size. The region is allocated with type EfiLoaderData. @param size Size, in bytes, of the region to allocate. @return NULL is returned if the space could not be allocated and errno contains the cause. Otherwise, a pointer to an 8-byte aligned region of the requested size is returned.<BR>
SMI management. Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> 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. **/ #include "PiSmmCore.h" LIST_ENTRY mSmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mSmiEntryList); SMI_ENTRY mRootSmiEntry = { SMI_ENTRY_SIGNATURE, INITIALIZE_LIST_HEAD_VARIABLE (mRootSmiEntry.AllEntries), {0}, INITIALIZE_LIST_HEAD_VARIABLE (mRootSmiEntry.SmiHandlers), }; /** Finds the SMI entry for the requested handler type. @param HandlerType The type of the interrupt @param Create Create a new entry if not found @return SMI entry
LIST_ENTRY AllEntries; // All entries EFI_GUID HandlerType; // Type of interrupt LIST_ENTRY SmiHandlers; // All handlers } SMI_ENTRY; #define SMI_HANDLER_SIGNATURE SIGNATURE_32('s','m','i','h') typedef struct { UINTN Signature; LIST_ENTRY Link; // Link on SMI_ENTRY.SmiHandlers EFI_SMM_HANDLER_ENTRY_POINT2 Handler; // The smm handler's entry point SMI_ENTRY *SmiEntry; } SMI_HANDLER; LIST_ENTRY mRootSmiHandlerList = INITIALIZE_LIST_HEAD_VARIABLE (mRootSmiHandlerList); LIST_ENTRY mSmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mSmiEntryList); /** Finds the SMI entry for the requested handler type. @param HandlerType The type of the interrupt @param Create Create a new entry if not found @return SMI entry **/ SMI_ENTRY * EFIAPI SmmCoreFindSmiEntry ( IN EFI_GUID *HandlerType,
5. Support diskette change line signal and write protect Copyright (c) 2006 - 2009, Intel Corporation.<BR> 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. **/ #include "IsaFloppy.h" LIST_ENTRY mControllerHead = INITIALIZE_LIST_HEAD_VARIABLE (mControllerHead); // // ISA Floppy Driver Binding Protocol // EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver = { FdcControllerDriverSupported, FdcControllerDriverStart, FdcControllerDriverStop, 0xa, NULL, NULL }; /**
Copyright (c) 2007 - 2008, Intel Corporation. <BR> 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. **/ #include "Hotkey.h" LIST_ENTRY mHotkeyList = INITIALIZE_LIST_HEAD_VARIABLE (mHotkeyList); BOOLEAN mHotkeyCallbackPending = FALSE; EFI_EVENT mHotkeyEvent; VOID *mHotkeyRegistration; /** Check if the Key Option is valid or not. @param KeyOption The Hot Key Option to be checked. @retval TRUE The Hot Key Option is valid. @retval FALSE The Hot Key Option is invalid. **/ BOOLEAN
EFI_CPU_ARCH_PROTOCOL *gDebugUncachedCpu; VIRTUAL_UNCACHED_PAGES_PROTOCOL *gVirtualUncachedPages; // // Assume all of memory has the same cache attributes, unless we do our magic // UINT64 gAttributes; typedef struct { VOID *Buffer; VOID *Allocation; UINTN Pages; LIST_ENTRY Link; } FREE_PAGE_NODE; LIST_ENTRY mPageList = INITIALIZE_LIST_HEAD_VARIABLE (mPageList); VOID AddPagesToList ( IN VOID *Buffer, IN VOID *Allocation, UINTN Pages ) { FREE_PAGE_NODE *NewNode; NewNode = AllocatePool (sizeof (LIST_ENTRY)); if (NewNode == NULL) { ASSERT (FALSE); return; }
typedef struct { UINT64 Signature; LIST_ENTRY Link; EDKII_IOMMU_OPERATION Operation; UINTN NumberOfBytes; UINTN NumberOfPages; EFI_PHYSICAL_ADDRESS CryptedAddress; EFI_PHYSICAL_ADDRESS PlainTextAddress; } MAP_INFO; // // List of the MAP_INFO structures that have been set up by IoMmuMap() and not // yet torn down by IoMmuUnmap(). The list represents the full set of mappings // currently in effect. // STATIC LIST_ENTRY mMapInfos = INITIALIZE_LIST_HEAD_VARIABLE (mMapInfos); #define COMMON_BUFFER_SIG SIGNATURE_64 ('C', 'M', 'N', 'B', 'U', 'F', 'F', 'R') // // ASCII names for EDKII_IOMMU_OPERATION constants, for debug logging. // STATIC CONST CHAR8 * CONST mBusMasterOperationName[EdkiiIoMmuOperationMaximum] = { "Read", "Write", "CommonBuffer", "Read64", "Write64", "CommonBuffer64" };
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include "PiSmmCore.h" #define TRUNCATE_TO_PAGES(a) ((a) >> EFI_PAGE_SHIFT) typedef struct { LIST_ENTRY Link; UINTN NumberOfPages; } FREE_PAGE_LIST; LIST_ENTRY mSmmMemoryMap = INITIALIZE_LIST_HEAD_VARIABLE (mSmmMemoryMap); /** Internal Function. Allocate n pages from given free page node. @param Pages The free page node. @param NumberOfPages Number of pages to be allocated. @param MaxAddress Request to allocate memory below this address. @return Memory address of allocated pages. **/ UINTN InternalAllocPagesOnOneNode ( IN OUT FREE_PAGE_LIST *Pages, IN UINTN NumberOfPages,
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. **/ #include "DxeMain.h" #include "Event.h" // // Internal data // LIST_ENTRY mEfiTimerList = INITIALIZE_LIST_HEAD_VARIABLE (mEfiTimerList); EFI_LOCK mEfiTimerLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_HIGH_LEVEL - 1); EFI_EVENT mEfiCheckTimerEvent = NULL; EFI_LOCK mEfiSystemTimeLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_HIGH_LEVEL); UINT64 mEfiSystemTime = 0; // // Timer functions // /** Inserts the timer event. @param Event Points to the internal structure of timer event to be installed
// typedef struct { UINTN Signature; EFI_HANDLE Handle; EFI_PERFORMANCE_PROTOCOL Perf; UINT8 Phase; } EFI_PERFORMANCE_INSTANCE; // // Performace protocol instance containing record macro // #define EFI_PERFORMANCE_FROM_THIS(a) \ CR(a, EFI_PERFORMANCE_INSTANCE, Perf, EFI_PERFORMANCE_SIGNATURE) EFI_LIST_ENTRY mPerfDataHead = INITIALIZE_LIST_HEAD_VARIABLE(mPerfDataHead); STATIC VOID GetShortPdbFileName ( CHAR8 *PdbFileName, CHAR8 *GaugeString ) /*++ Routine Description: Arguments: Returns:
#include <Library/DebugLib.h> #include <Library/MemoryAllocationLib.h> #include <Protocol/EmuIoThunk.h> #define EMU_IO_THUNK_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('E','m','u','T') typedef struct { UINTN Signature; EMU_IO_THUNK_PROTOCOL Data; BOOLEAN EmuBusDriver; LIST_ENTRY Link; } EMU_IO_THUNK_PROTOCOL_DATA; LIST_ENTRY mThunkList = INITIALIZE_LIST_HEAD_VARIABLE (mThunkList); EFI_STATUS EFIAPI AddThunkProtocol ( IN EMU_IO_THUNK_PROTOCOL *ThunkIo, IN CHAR16 *ConfigString, IN BOOLEAN EmuBusDriver ) { CHAR16 *StartString; CHAR16 *SubString; UINTN Instance; EMU_IO_THUNK_PROTOCOL_DATA *Private;
{0x20, S3BootScriptWidthUint32}, {0x24, S3BootScriptWidthUint32}, {0x3c, S3BootScriptWidthUint8}, {0x3d, S3BootScriptWidthUint8}, {0x40, S3BootScriptWidthUint16}, {0x42, S3BootScriptWidthUint16}, {0x92, S3BootScriptWidthUint16}, {0x94, S3BootScriptWidthUint32}, {0x9C, S3BootScriptWidthUint32}, {0x4, S3BootScriptWidthUint16}, }; UINT8 mSwSmiValue; LIST_ENTRY *mOpalDeviceList; LIST_ENTRY mSmmDeviceList = INITIALIZE_LIST_HEAD_VARIABLE (mSmmDeviceList); BOOLEAN mSendBlockSID = FALSE; // AHCI UINT32 mAhciBar = 0; EFI_AHCI_REGISTERS mAhciRegisters; VOID *mBuffer = NULL; // DMA can not read/write Data to smram, so we pre-allocates Buffer from AcpiNVS. // // NVME NVME_CONTEXT mNvmeContext; /** Add new bridge node or nvme device info to the device list. @param[in] BusNum The bus number.
NULL, // ControllerHandle NULL, // PciIo { // PassThru sizeof (UINT32), SdMmcPassThruPassThru, SdMmcPassThruGetNextSlot, SdMmcPassThruBuildDevicePath, SdMmcPassThruGetSlotNumber, SdMmcPassThruResetDevice }, 0, // PciAttributes 0, // PreviousSlot NULL, // TimerEvent NULL, // ConnectEvent // Queue INITIALIZE_LIST_HEAD_VARIABLE (gSdMmcPciHcTemplate.Queue), { // Slot {0, UnknownSlot, 0, 0, 0}, {0, UnknownSlot, 0, 0, 0}, {0, UnknownSlot, 0, 0, 0}, {0, UnknownSlot, 0, 0, 0}, {0, UnknownSlot, 0, 0, 0}, {0, UnknownSlot, 0, 0, 0} }, { // Capability {0}, }, { // MaxCurrent 0, }, 0 // ControllerVersion }; SD_DEVICE_PATH mSdDpTemplate = { {
typedef struct { UINT32 Signature; MEMORY_PROFILE_DRIVER_INFO DriverInfo; LIST_ENTRY *AllocInfoList; LIST_ENTRY Link; } MEMORY_PROFILE_DRIVER_INFO_DATA; typedef struct { UINT32 Signature; MEMORY_PROFILE_ALLOC_INFO AllocInfo; LIST_ENTRY Link; } MEMORY_PROFILE_ALLOC_INFO_DATA; GLOBAL_REMOVE_IF_UNREFERENCED LIST_ENTRY mImageQueue = INITIALIZE_LIST_HEAD_VARIABLE (mImageQueue); GLOBAL_REMOVE_IF_UNREFERENCED MEMORY_PROFILE_CONTEXT_DATA mMemoryProfileContext = { MEMORY_PROFILE_CONTEXT_SIGNATURE, { { MEMORY_PROFILE_CONTEXT_SIGNATURE, sizeof (MEMORY_PROFILE_CONTEXT), MEMORY_PROFILE_CONTEXT_REVISION }, 0, 0, {0}, {0}, 0, 0, 0
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include "InternalBm.h" #define VENDOR_IDENTIFICATION_OFFSET 3 #define VENDOR_IDENTIFICATION_LENGTH 8 #define PRODUCT_IDENTIFICATION_OFFSET 11 #define PRODUCT_IDENTIFICATION_LENGTH 16 CONST UINT16 mBmUsbLangId = 0x0409; // English CHAR16 mBmUefiPrefix[] = L"UEFI "; LIST_ENTRY mPlatformBootDescriptionHandlers = INITIALIZE_LIST_HEAD_VARIABLE (mPlatformBootDescriptionHandlers); /** For a bootable Device path, return its boot type. @param DevicePath The bootable device Path to check @retval AcpiFloppyBoot If given device path contains ACPI_DEVICE_PATH type device path node which HID is floppy device. @retval MessageAtapiBoot If given device path contains MESSAGING_DEVICE_PATH type device path node and its last device path node's subtype is MSG_ATAPI_DP. @retval MessageSataBoot If given device path contains MESSAGING_DEVICE_PATH type device path node and its last device path node's subtype is MSG_SATA_DP. @retval MessageScsiBoot If given device path contains MESSAGING_DEVICE_PATH type device path node and its last device path node's subtype is MSG_SCSI_DP. @retval MessageUsbBoot If given device path contains MESSAGING_DEVICE_PATH type device path node
INTN Signature; UINTN Used; EFI_MEMORY_TYPE MemoryType; LIST_ENTRY FreeList[MAX_POOL_LIST]; LIST_ENTRY Link; } POOL; // // Pool header for each memory type. // POOL mPoolHead[EfiMaxMemoryType]; // // List of pool header to search for the appropriate memory type. // LIST_ENTRY mPoolHeadList = INITIALIZE_LIST_HEAD_VARIABLE (mPoolHeadList); /** Get pool size table index from the specified size. @param Size The specified size to get index from pool table. @return The index of pool size table. **/ STATIC UINTN GetPoolIndexFromSize ( UINTN Size ) {
--*/ #include "PlatOverMngr.h" #include "PlatDriOverLib.h" #define PLAT_OVER_MNGR_GUID \ { \ 0x8614567d, 0x35be, 0x4415, 0x8d, 0x88, 0xbd, 0x7d, 0xc, 0x9c, 0x70, 0xc0 \ } EFI_DRIVER_ENTRY_POINT (PlatOverMngrInit) STATIC EFI_GUID mPlatformOverridesManagerGuid = PLAT_OVER_MNGR_GUID; STATIC EFI_LIST_ENTRY mMappingDataBase = INITIALIZE_LIST_HEAD_VARIABLE (mMappingDataBase); STATIC EFI_HANDLE *mDevicePathHandleBuffer; STATIC EFI_HANDLE *mDriverImageHandleBuffer; STATIC EFI_HANDLE mSelectedCtrDPHandle; STATIC CFG_PROTOCOL_INVOKER_CHOICE mChoice[MAX_CHOICE_NUM]; STATIC UINTN mSelectedCtrIndex; STATIC STRING_REF mControllerToken[MAX_CHOICE_NUM]; STATIC UINTN mDriverImageHandleCount; STATIC STRING_REF mDriverImageToken[MAX_CHOICE_NUM]; STATIC STRING_REF mDriverImageFilePathToken[MAX_CHOICE_NUM]; STATIC EFI_LOADED_IMAGE_PROTOCOL *mDriverImageProtocol[MAX_CHOICE_NUM]; STATIC EFI_DEVICE_PATH_PROTOCOL *mControllerDevicePathProtocol[MAX_CHOICE_NUM];