XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Variables
ExtendedSalBootService.h File Reference
#include <IndustryStandard/Sal.h>
Include dependency graph for ExtendedSalBootService.h:

Go to the source code of this file.

Classes

struct  _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL
 

Macros

#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID    { 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }
 

Typedefs

typedef struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL EXTENDED_SAL_BOOT_SERVICE_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEXTENDED_SAL_ADD_SST_INFO) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT16 SalAVersion, IN UINT16 SalBVersion, IN CHAR8 *OemId, IN CHAR8 *ProductId)
 
typedef EFI_STATUS(EFIAPIEXTENDED_SAL_ADD_SST_ENTRY) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT8 *TableEntry, IN UINTN EntrySize)
 
typedef SAL_RETURN_REGS(EFIAPISAL_INTERNAL_EXTENDED_SAL_PROC) (IN UINT64 FunctionId, IN UINT64 Arg2, IN UINT64 Arg3, IN UINT64 Arg4, IN UINT64 Arg5, IN UINT64 Arg6, IN UINT64 Arg7, IN UINT64 Arg8, IN BOOLEAN VirtualMode, IN VOID *ModuleGlobal OPTIONAL)
 
typedef EFI_STATUS(EFIAPIEXTENDED_SAL_REGISTER_INTERNAL_PROC) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT64 ClassGuidLo, IN UINT64 ClassGuidHi, IN UINT64 FunctionId, IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc, IN VOID *PhysicalModuleGlobal OPTIONAL)
 
typedef SAL_RETURN_REGS(EFIAPIEXTENDED_SAL_PROC) (IN UINT64 ClassGuidLo, IN UINT64 ClassGuidHi, IN UINT64 FunctionId, IN UINT64 Arg2, IN UINT64 Arg3, IN UINT64 Arg4, IN UINT64 Arg5, IN UINT64 Arg6, IN UINT64 Arg7, IN UINT64 Arg8)
 

Variables

EFI_GUID gEfiExtendedSalBootServiceProtocolGuid
 

Detailed Description

Definition of Extended SAL Boot Service Protocol

The Extended SAL Boot Service Protocol provides a mechanisms for platform specific drivers to update the SAL System Table and register Extended SAL Procedures that are callable in physical or virtual mode using the SAL calling convention.

Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Revision Reference:
This Protocol was introduced in PI Specification 1.2.

Macro Definition Documentation

◆ EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID

#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID    { 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }

Typedef Documentation

◆ EXTENDED_SAL_ADD_SST_ENTRY

typedef EFI_STATUS(EFIAPI * EXTENDED_SAL_ADD_SST_ENTRY) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT8 *TableEntry, IN UINTN EntrySize)

Adds an entry to the SAL System Table.

This function adds the SAL System Table Entry specified by TableEntry and EntrySize to the SAL System Table.

Parameters
ThisA pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
TableEntryPointer to a buffer containing a SAL System Table entry that is EntrySize bytes in length. The first byte of the TableEntry describes the type of entry.
EntrySizeThe size, in bytes, of TableEntry.
Return values
EFI_SUCCESSTheSAL System Table was updated successfully.
EFI_INVALID_PARAMETERTableEntry is NULL.
EFI_INVALID_PARAMETERTableEntry specifies an invalid entry type.
EFI_INVALID_PARAMETEREntrySize is not valid for this type of entry.

◆ EXTENDED_SAL_ADD_SST_INFO

typedef EFI_STATUS(EFIAPI * EXTENDED_SAL_ADD_SST_INFO) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT16 SalAVersion, IN UINT16 SalBVersion, IN CHAR8 *OemId, IN CHAR8 *ProductId)

Adds platform specific information to the to the header of the SAL System Table.

Parameters
ThisA pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
SalAVersionVersion of recovery SAL PEIM(s) in BCD format. Higher byte contains the major revision and the lower byte contains the minor revision.
SalBVersionVersion of DXE SAL Driver in BCD format. Higher byte contains the major revision and the lower byte contains the minor revision.
OemIdA pointer to a Null-terminated ASCII string that contains OEM unique string. The string cannot be longer than 32 bytes in total length
ProductIdA pointer to a Null-terminated ASCII string that uniquely identifies a family of compatible products. The string cannot be longer than 32 bytes in total length.
Return values
EFI_SUCCESSThe SAL System Table header was updated successfully.
EFI_INVALID_PARAMETEROemId is NULL.
EFI_INVALID_PARAMETERProductId is NULL.
EFI_INVALID_PARAMETERThe length of OemId is greater than 32 characters.
EFI_INVALID_PARAMETERThe length of ProductId is greater than 32 characters.

◆ EXTENDED_SAL_BOOT_SERVICE_PROTOCOL

◆ EXTENDED_SAL_PROC

typedef SAL_RETURN_REGS(EFIAPI * EXTENDED_SAL_PROC) (IN UINT64 ClassGuidLo, IN UINT64 ClassGuidHi, IN UINT64 FunctionId, IN UINT64 Arg2, IN UINT64 Arg3, IN UINT64 Arg4, IN UINT64 Arg5, IN UINT64 Arg6, IN UINT64 Arg7, IN UINT64 Arg8)

Calls a previously registered Extended SAL Procedure.

This function calls the Extended SAL Procedure specified by ClassGuidLo, ClassGuidHi, and FunctionId. The set of previously registered Extended SAL Procedures is searched for a matching ClassGuidLo, ClassGuidHi, and FunctionId. If a match is not found, then EFI_SAL_NOT_IMPLEMENTED is returned.

Parameters
ClassGuidLoThe lower 64-bits of the class GUID for the Extended SAL Procedure that is being called.
ClassGuidHiThe upper 64-bits of the class GUID for the Extended SAL Procedure that is being called.
FunctionIdFunction ID for the Extended SAL Procedure being called.
Arg2Second argument to the Extended SAL procedure.
Arg3Third argument to the Extended SAL procedure.
Arg4Fourth argument to the Extended SAL procedure.
Arg5Fifth argument to the Extended SAL procedure.
Arg6Sixth argument to the Extended SAL procedure.
Arg7Seventh argument to the Extended SAL procedure.
Arg8Eighth argument to the Extended SAL procedure.
Return values
EFI_SAL_NOT_IMPLEMENTEDThe Extended SAL Procedure specified by ClassGuidLo, ClassGuidHi, and FunctionId has not been registered.
EFI_SAL_VIRTUAL_ADDRESS_ERRORThis function was called in virtual mode before virtual mappings for the specified Extended SAL Procedure are available.
OtherThe result returned from the specified Extended SAL Procedure

◆ EXTENDED_SAL_REGISTER_INTERNAL_PROC

typedef EFI_STATUS(EFIAPI * EXTENDED_SAL_REGISTER_INTERNAL_PROC) (IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, IN UINT64 ClassGuidLo, IN UINT64 ClassGuidHi, IN UINT64 FunctionId, IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc, IN VOID *PhysicalModuleGlobal OPTIONAL)

Registers an Extended SAL Procedure.

The Extended SAL Procedure specified by InternalSalProc and named by ClassGuidLo, ClassGuidHi, and FunctionId is added to the set of available Extended SAL Procedures.

Parameters
ThisA pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
ClassGuidLoThe lower 64-bits of the class GUID for the Extended SAL Procedure being added. Each class GUID contains one or more functions specified by a Function ID.
ClassGuidHiThe upper 64-bits of the class GUID for the Extended SAL Procedure being added. Each class GUID contains one or more functions specified by a Function ID.
FunctionIdThe Function ID for the Extended SAL Procedure that is being added. This Function ID is a member of the Extended SAL Procedure class specified by ClassGuidLo and ClassGuidHi.
InternalSalProcA pointer to the Extended SAL Procedure being added.
PhysicalModuleGlobalPointer to a module global structure. This is a physical mode pointer. This pointer is passed to the Extended SAL Procedure specified by ClassGuidLo, ClassGuidHi, FunctionId, and InternalSalProc. If the system is in physical mode, then this pointer is passed unmodified to InternalSalProc. If the system is in virtual mode, then the virtual address associated with this pointer is passed to InternalSalProc.
Return values
EFI_SUCCESSThe Extended SAL Procedure was added.
EFI_OUT_OF_RESOURCESThere are not enough resources available to add the Extended SAL Procedure.

◆ SAL_INTERNAL_EXTENDED_SAL_PROC

typedef SAL_RETURN_REGS(EFIAPI * SAL_INTERNAL_EXTENDED_SAL_PROC) (IN UINT64 FunctionId, IN UINT64 Arg2, IN UINT64 Arg3, IN UINT64 Arg4, IN UINT64 Arg5, IN UINT64 Arg6, IN UINT64 Arg7, IN UINT64 Arg8, IN BOOLEAN VirtualMode, IN VOID *ModuleGlobal OPTIONAL)

Internal ESAL procedures.

This is prototype of internal Extended SAL procedures, which is registerd by EXTENDED_SAL_REGISTER_INTERNAL_PROC service.

Parameters
FunctionIdThe Function ID associated with this Extended SAL Procedure.
Arg2Second argument to the Extended SAL procedure.
Arg3Third argument to the Extended SAL procedure.
Arg4Fourth argument to the Extended SAL procedure.
Arg5Fifth argument to the Extended SAL procedure.
Arg6Sixth argument to the Extended SAL procedure.
Arg7Seventh argument to the Extended SAL procedure.
Arg8Eighth argument to the Extended SAL procedure.
VirtualModeTRUE if the Extended SAL Procedure is being invoked in virtual mode. FALSE if the Extended SAL Procedure is being invoked in physical mode.
ModuleGlobalA pointer to the global context associated with this Extended SAL Procedure.
Returns
The result returned from the specified Extended SAL Procedure

Variable Documentation

◆ gEfiExtendedSalBootServiceProtocolGuid

EFI_GUID gEfiExtendedSalBootServiceProtocolGuid
extern