//************************************************************************* //************************************************************************* //** ** //** (C)Copyright 1985-2009, American Megatrends, Inc. ** //** ** //** All Rights Reserved. ** //** ** //** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** //** ** //** Phone: (770)-246-8600 ** //** ** //************************************************************************* //************************************************************************* //************************************************************************* // $Header: /Alaska/SOURCE/Core/Library/Misc.c 8 5/22/12 4:14p Oleksiyy $ // // $Revision: 8 $ // // $Date: 5/22/12 4:14p $ //************************************************************************* // Revision History // ---------------- // $Log: /Alaska/SOURCE/Core/Library/Misc.c $ // // 8 5/22/12 4:14p Oleksiyy // [TAG] EIP90322 // [Category] Improvement // [Description] Declaration of AMI Global Variable Guid is added. // [Files] Misc.c and AmiLib.h // // 7 7/10/09 3:49p Felixp // Function headers added // // 6 4/03/06 5:07p Felixp // ExecScript function added // // 5 3/04/05 10:50a Mandal // // 4 1/18/05 3:22p Felixp // PrintDebugMessage renamed to Trace // // 3 1/14/05 1:17p Felixp // // 2 1/14/05 1:14p Felixp // FindNextHobByGuid added // // 1 12/23/04 9:41a Felixp // // 2 11/18/04 6:09p Felixp // // 1 11/18/04 10:52a Felixp // //************************************************************************* // // // Name: Misc.c // // Description: // Miscellaneous generic library functions. // // //************************************************************************* #include #include EFI_GUID gAmiGlobalVariableGuid = AMI_GLOBAL_VARIABLE_GUID; //************************************************************************* // // // Name: FindNextHobByType // // Description: // EFI_STATUS FindNextHobByType(IN UINT16 Type, IN OUT VOID **Hob) finds a // HOB with a specified Type starting from the HOB that comes after the HOB // pointed by *Hob. *Hob pointer is updated with the address of the found // HOB. // // Input: // IN UINT16 Type // Type of HOB to return. // // IN OUT VOID **Hob // Address of the HOB if found. Otherwise unchanged. // // Output: // EFI_INVALID_PARAMETER, if Hob = NULL. // EFI_NOT_FOUND, if HOB of specified type not found. // Otherwise, EFI_SUCCESS. // // Modified: // // Referrals: // NextHob // // Notes: // // //************************************************************************* EFI_STATUS FindNextHobByType(IN UINT16 Type, IN OUT VOID **Hob) { EFI_HOB_GENERIC_HEADER *ThisHob; if (Hob == NULL) return EFI_INVALID_PARAMETER; ThisHob = *Hob; while(ThisHob->HobType != EFI_HOB_TYPE_END_OF_HOB_LIST) { ThisHob=NextHob(ThisHob,EFI_HOB_GENERIC_HEADER); if (ThisHob->HobType==Type) { *Hob=ThisHob; return EFI_SUCCESS; } } return EFI_NOT_FOUND; } //************************************************************************* // // // Name: FindNextHobByGuid // // Description: // EFI_STATUS FindNextHobByGuid(IN EFI_GUID *Guid, IN OUT VOID **Hob) finds // HOB of type Guid Extention with a specified GUID starting from the HOB // that comes after the HOB pointed by *Hob. *Hob pointer is updated with // the address of the found HOB. // // Input: // IN EFI_GUID *Guid // GUID for specific Guid Extention HOB. // // IN OUT VOID **Hob // Address of the HOB if found. Otherwise unchanged. // // Output: // EFI_INVALID_PARAMETER, if Hob = NULL. // EFI_NOT_FOUND, if HOB of specified type not found. // Otherwise, EFI_SUCCESS. // // Modified: // // Referrals: // FindNextHobByType // guidcmp // // Notes: // // //************************************************************************* EFI_STATUS FindNextHobByGuid(IN EFI_GUID *Guid, IN OUT VOID **Hob) { EFI_HOB_GUID_TYPE *ThisHob; EFI_STATUS Status; if (!Guid||!Hob) return EFI_INVALID_PARAMETER; ThisHob=*Hob; for(;;){ Status = FindNextHobByType(EFI_HOB_TYPE_GUID_EXTENSION,&ThisHob); if (EFI_ERROR(Status)) return Status; if (!guidcmp(&ThisHob->Name,Guid)) { *Hob = ThisHob; return EFI_SUCCESS; } } } //************************************************************************* // // // Name: ExecScript // // Description: // EFI_STATUS ExecScript(IN IO_DATA *ScriptData, IN UINTN EntryCount) // executes a sequence of CPU I/O operations. // // Input: // IN IO_DATA *ScriptData // Pointer to the first element of an IO_DATA table. // // IN UINTN EntryCount // Number of entries in the IO_DATA table. // // Output: // EFI_INVALID_PARAMETER, if a width or address within the table is invalid. // Otherwise, EFI_SUCCESS. // // Modified: // // Referrals: // IoWrite // // Notes: // // //************************************************************************* EFI_STATUS ExecScript(IO_DATA *ScriptData, UINTN EntryCount){ UINTN i; EFI_STATUS Status; //---------------------- for(i=0; i