https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Provides library functions for common SMBIOS operations. Only available to DXE
 | 
						|
  and UEFI module types.
 | 
						|
 | 
						|
 | 
						|
Copyright (c) 2012, Apple Inc. All rights reserved.
 | 
						|
Portitions Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _SMBIOS_LIB_H__
 | 
						|
#define _SMBIOS_LIB_H__
 | 
						|
 | 
						|
#include <IndustryStandard/SmBios.h>
 | 
						|
#include <Protocol/Smbios.h>
 | 
						|
 | 
						|
 | 
						|
///
 | 
						|
/// Cache copy of the SMBIOS Protocol pointer
 | 
						|
///
 | 
						|
extern EFI_SMBIOS_PROTOCOL *gSmbios;
 | 
						|
 | 
						|
 | 
						|
///
 | 
						|
/// Template for SMBIOS table initialization.
 | 
						|
/// The SMBIOS_TABLE_STRING types in the formated area must match the
 | 
						|
/// StringArray sequene.
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  //
 | 
						|
  // formatted area of a given SMBIOS record
 | 
						|
  //
 | 
						|
  SMBIOS_STRUCTURE    *Entry;
 | 
						|
  //
 | 
						|
  // NULL terminated array of ASCII strings to be added to the SMBIOS record.
 | 
						|
  //
 | 
						|
  CHAR8               **StringArray;
 | 
						|
} SMBIOS_TEMPLATE_ENTRY;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Create an initial SMBIOS Table from an array of SMBIOS_TEMPLATE_ENTRY
 | 
						|
  entries. SMBIOS_TEMPLATE_ENTRY.NULL indicates the end of the table.
 | 
						|
 | 
						|
  @param  Template   Array of SMBIOS_TEMPLATE_ENTRY entries.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          New SMBIOS tables were created.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES New SMBIOS tables were not created.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SmbiosLibInitializeFromTemplate (
 | 
						|
  IN  SMBIOS_TEMPLATE_ENTRY   *Template
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Create SMBIOS record.
 | 
						|
 | 
						|
  Converts a fixed SMBIOS structure and an array of pointers to strings into
 | 
						|
  an SMBIOS record where the strings are cat'ed on the end of the fixed record
 | 
						|
  and terminated via a double NULL and add to SMBIOS table.
 | 
						|
 | 
						|
  SMBIOS_TABLE_TYPE32 gSmbiosType12 = {
 | 
						|
    { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },
 | 
						|
    1 // StringCount
 | 
						|
  };
 | 
						|
  CHAR8 *gSmbiosType12Strings[] = {
 | 
						|
    "Not Found",
 | 
						|
    NULL
 | 
						|
  };
 | 
						|
 | 
						|
  ...
 | 
						|
  AddSmbiosEntryFromTemplate (
 | 
						|
    (EFI_SMBIOS_TABLE_HEADER*)&gSmbiosType12,
 | 
						|
    gSmbiosType12Strings
 | 
						|
    );
 | 
						|
 | 
						|
  @param  SmbiosEntry   Fixed SMBIOS structure
 | 
						|
  @param  StringArray   Array of strings to convert to an SMBIOS string pack.
 | 
						|
                        NULL is OK.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          New SmbiosEntry was added to SMBIOS table.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES SmbiosEntry was not added.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SmbiosLibCreateEntry (
 | 
						|
  IN  SMBIOS_STRUCTURE *SmbiosEntry,
 | 
						|
  IN  CHAR8            **StringArray
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Update the string associated with an existing SMBIOS record.
 | 
						|
 | 
						|
  This function allows the update of specific SMBIOS strings. The number of valid strings for any
 | 
						|
  SMBIOS record is defined by how many strings were present when Add() was called.
 | 
						|
 | 
						|
  @param[in]    SmbiosHandle    SMBIOS Handle of structure that will have its string updated.
 | 
						|
  @param[in]    StringNumber    The non-zero string number of the string to update.
 | 
						|
  @param[in]    String          Update the StringNumber string with String.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           SmbiosHandle had its StringNumber String updated.
 | 
						|
  @retval EFI_INVALID_PARAMETER SmbiosHandle does not exist. Or String is invalid.
 | 
						|
  @retval EFI_UNSUPPORTED       String was not added because it is longer than the SMBIOS Table supports.
 | 
						|
  @retval EFI_NOT_FOUND         The StringNumber.is not valid for this SMBIOS record.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SmbiosLibUpdateString (
 | 
						|
  IN  EFI_SMBIOS_HANDLE     SmbiosHandle,
 | 
						|
  IN  SMBIOS_TABLE_STRING   StringNumber,
 | 
						|
  IN  CHAR8                 *String
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Update the string associated with an existing SMBIOS record.
 | 
						|
 | 
						|
  This function allows the update of specific SMBIOS strings. The number of valid strings for any
 | 
						|
  SMBIOS record is defined by how many strings were present when Add() was called.
 | 
						|
 | 
						|
  @param[in]    SmbiosHandle    SMBIOS Handle of structure that will have its string updated.
 | 
						|
  @param[in]    StringNumber    The non-zero string number of the string to update.
 | 
						|
  @param[in]    String          Update the StringNumber string with String.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           SmbiosHandle had its StringNumber String updated.
 | 
						|
  @retval EFI_INVALID_PARAMETER SmbiosHandle does not exist. Or String is invalid.
 | 
						|
  @retval EFI_UNSUPPORTED       String was not added because it is longer than the SMBIOS Table supports.
 | 
						|
  @retval EFI_NOT_FOUND         The StringNumber.is not valid for this SMBIOS record.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SmbiosLibUpdateUnicodeString (
 | 
						|
  IN  EFI_SMBIOS_HANDLE     SmbiosHandle,
 | 
						|
  IN  SMBIOS_TABLE_STRING   StringNumber,
 | 
						|
  IN  CHAR16                *String
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Allow caller to read a specific SMBIOS string
 | 
						|
 | 
						|
  @param[in]    Header          SMBIOS record that contains the string.
 | 
						|
  @param[in[    StringNumber    Instance of SMBIOS string 1 - N.
 | 
						|
 | 
						|
  @retval NULL                  Instance of Type SMBIOS string was not found.
 | 
						|
  @retval Other                 Pointer to matching SMBIOS string.
 | 
						|
**/
 | 
						|
CHAR8 *
 | 
						|
EFIAPI
 | 
						|
SmbiosLibReadString (
 | 
						|
  IN SMBIOS_STRUCTURE   *Header,
 | 
						|
  IN EFI_SMBIOS_STRING  StringNumber
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Allow the caller to discover a specific SMBIOS entry, and patch it if necissary.
 | 
						|
 | 
						|
  @param[in]    Type            Type of the next SMBIOS record to return.
 | 
						|
  @param[in[    Instance        Instance of SMBIOS record 0 - N-1.
 | 
						|
  @param[out]   SmbiosHandle    Returns SMBIOS handle for the matching record.
 | 
						|
 | 
						|
  @retval NULL                  Instance of Type SMBIOS record was not found.
 | 
						|
  @retval Other                 Pointer to matching SMBIOS record.
 | 
						|
**/
 | 
						|
SMBIOS_STRUCTURE *
 | 
						|
EFIAPI
 | 
						|
SmbiosLibGetRecord (
 | 
						|
  IN  EFI_SMBIOS_TYPE   Type,
 | 
						|
  IN  UINTN             Instance,
 | 
						|
  OUT EFI_SMBIOS_HANDLE *SmbiosHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Remove an SMBIOS record.
 | 
						|
 | 
						|
  This function removes an SMBIOS record using the handle specified by SmbiosHandle.
 | 
						|
 | 
						|
  @param[in]    SmbiosHandle        The handle of the SMBIOS record to remove.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS               SMBIOS record was removed.
 | 
						|
  @retval EFI_INVALID_PARAMETER     SmbiosHandle does not specify a valid SMBIOS record.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SmbiosLibRemove (
 | 
						|
  OUT EFI_SMBIOS_HANDLE SmbiosHandle
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#endif
 |