TianoCore EDK2 master
Loading...
Searching...
No Matches
AmlString.h File Reference
#include <AmlInclude.h>

Go to the source code of this file.

Functions

BOOLEAN EFIAPI AmlIsNameString (IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
 
EFI_STATUS EFIAPI AmlUpperCaseMemCpyS (OUT CHAR8 *DstBuffer, IN UINT32 MaxDstBufferSize, IN CONST CHAR8 *SrcBuffer, IN UINT32 Count)
 
BOOLEAN EFIAPI AmlIsRootPath (IN CONST CHAR8 *Buffer)
 
BOOLEAN EFIAPI AmlIsLeadNameChar (IN CHAR8 Ch)
 
BOOLEAN EFIAPI AmlIsNameChar (IN CHAR8 Ch)
 
BOOLEAN EFIAPI AslIsNameSeg (IN CONST CHAR8 *AslBuffer, OUT UINT32 *Size)
 
BOOLEAN EFIAPI AmlIsNameSeg (IN CONST CHAR8 *AmlBuffer)
 
EFI_STATUS EFIAPI AslParseNameStringInfo (IN CONST CHAR8 *Buffer, OUT UINT32 *Root, OUT UINT32 *ParentPrefix, OUT UINT32 *SegCount)
 
EFI_STATUS EFIAPI AmlParseNameStringInfo (IN CONST CHAR8 *Buffer, OUT UINT32 *Root, OUT UINT32 *ParentPrefix, OUT UINT32 *SegCount)
 
UINT32 EFIAPI AslComputeNameStringSize (IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
 
UINT32 EFIAPI AmlComputeNameStringSize (IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
 
EFI_STATUS EFIAPI AslGetNameStringSize (IN CONST CHAR8 *AslPath, OUT UINT32 *AslPathSizePtr)
 
EFI_STATUS EFIAPI AmlGetNameStringSize (IN CONST CHAR8 *AmlPath, OUT UINT32 *AmlPathSizePtr)
 
EFI_STATUS EFIAPI ConvertAslNameToAmlName (IN CONST CHAR8 *AslPath, OUT CHAR8 **OutAmlPath)
 
EFI_STATUS EFIAPI ConvertAmlNameToAslName (IN CONST CHAR8 *AmlPath, OUT CHAR8 **OutAslPath)
 
BOOLEAN EFIAPI AslCompareNameString (IN CONST CHAR8 *AslName1, IN CONST CHAR8 *AslName2)
 
BOOLEAN EFIAPI AmlCompareNameString (IN CONST CHAR8 *AmlName1, IN CONST CHAR8 *AmlName2)
 
BOOLEAN EFIAPI CompareAmlWithAslNameString (IN CONST CHAR8 *AmlName1, IN CONST CHAR8 *AslName2)
 
CONST CHAR8 *EFIAPI AmlGetFirstNameSeg (IN CONST CHAR8 *AmlPath, IN UINT32 Root, IN UINT32 ParentPrefix)
 

Detailed Description

AML String.

Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file AmlString.h.

Function Documentation

◆ AmlCompareNameString()

BOOLEAN EFIAPI AmlCompareNameString ( IN CONST CHAR8 *  AmlName1,
IN CONST CHAR8 *  AmlName2 
)

Compare two AML NameStrings.

Parameters
[in]AmlName1First NameString to compare.
[in]AmlName2Second NameString to compare.
Return values
TRUEif the two strings are identical.
FALSEotherwise, or if error.

Definition at line 919 of file AmlString.c.

◆ AmlComputeNameStringSize()

UINT32 EFIAPI AmlComputeNameStringSize ( IN UINT32  Root,
IN UINT32  ParentPrefix,
IN UINT32  SegCount 
)

Compute the AML NameString/path size from NameString information (Root, ParentPrefix, SegCount).

Parameters
[in]RootNumber of root char. Can be 0 or 1.
[in]ParentPrefixNumber of carets char ('^'). Can be [0-255].
[in]SegCountPointer holding the number of NameSeg(s). Can be [0-255].
Returns
Size of the AML NameString/path.

Definition at line 481 of file AmlString.c.

◆ AmlGetFirstNameSeg()

CONST CHAR8 *EFIAPI AmlGetFirstNameSeg ( IN CONST CHAR8 *  AmlPath,
IN UINT32  Root,
IN UINT32  ParentPrefix 
)

Given an AmlPath, return the address of the first NameSeg.

It is possible to determine the size of an AML NameString/path just by sight reading it. So no overflow can occur.

Parameters
[in]AmlPathThe AML pathname.
[in]RootThe AML pathname starts with a root char. It is an absolute path.
[in]ParentPrefixThe AML pathname has ParentPrefix carets in its name.
Returns
Pointer to the first NameSeg of the NameString. Return NULL if AmlPath is NULL.

Definition at line 1021 of file AmlString.c.

◆ AmlGetNameStringSize()

EFI_STATUS EFIAPI AmlGetNameStringSize ( IN CONST CHAR8 *  AmlPath,
OUT UINT32 *  AmlPathSizePtr 
)

Get the AML NameString/path size.

Parameters
[in]AmlPathAn AML NameString/path.
[out]AmlPathSizePtrPointer holding the AML NameString/path size.
Return values
EFI_SUCCESSSuccess.
EFI_INVALID_PARAMETERInvalid parameter.

Definition at line 547 of file AmlString.c.

◆ AmlIsLeadNameChar()

BOOLEAN EFIAPI AmlIsLeadNameChar ( IN CHAR8  Ch)

Check whether Ch is an ASL/AML LeadName.

This function works for both ASL and AML pathnames.

ACPI 6.3 specification, s19.2.2. "ASL Name and Pathname Terms": LeadNameChar := 'A'-'Z' | 'a'-'z' | '_'

ACPI 6.3 specification, s20.2.2. "Name Objects Encoding": LeadNameChar := 'A'-'Z' | 'a'-'z' | '_'

Parameters
[in]ChThe char to test.
Return values
TRUECh is an ASL/AML LeadName.
FALSECh is not an ASL/AML LeadName.

Definition at line 144 of file AmlString.c.

◆ AmlIsNameChar()

BOOLEAN EFIAPI AmlIsNameChar ( IN CHAR8  Ch)

Check whether Ch is an ASL/AML NameChar.

This function works for both ASL and AML pathnames.

ACPI 6.3 specification, s19.2.2. "ASL Name and Pathname Terms": NameChar := DigitChar | LeadNameChar LeadNameChar := 'A'-'Z' | 'a'-'z' | '_' DigitChar := '0'-'9'

ACPI 6.3 specification, s20.2.2. "Name Objects Encoding": NameChar := DigitChar | LeadNameChar LeadNameChar := 'A'-'Z' | 'a'-'z' | '_' DigitChar := '0'-'9'

Parameters
[in]ChThe char to test.
Return values
TRUECh is an ASL/AML NameChar.
FALSECh is not an ASL/AML NameChar.

Definition at line 176 of file AmlString.c.

◆ AmlIsNameSeg()

BOOLEAN EFIAPI AmlIsNameSeg ( IN CONST CHAR8 *  AmlBuffer)

Check whether AmlBuffer is an AML NameSeg.

This function only works for AML NameStrings/pathnames. AML NameStrings/pathnames must be 4 chars long.

Parameters
[in]AmlBufferPointer in an AML NameString/pathname.
Return values
TRUEAmlBuffer is an AML NameSeg.
FALSEAmlBuffer is not an AML NameSeg.

Definition at line 244 of file AmlString.c.

◆ AmlIsNameString()

BOOLEAN EFIAPI AmlIsNameString ( IN UINT32  Root,
IN UINT32  ParentPrefix,
IN UINT32  SegCount 
)

Check NameString/path information is valid.

Root, ParentPrefix and SegCount cannot be 0 at the same time. This function works for ASL and AML name strings.

Parameters
[in]RootNumber of root char. Must be 0 or 1.
[in]ParentPrefixNumber of carets char ('^'). Must be [0-255].
[in]SegCountNumber of NameSeg (s). Must be [0-255].
Return values
TRUEid the input information is in the right boundaries. FALSE otherwise.

Definition at line 32 of file AmlString.c.

◆ AmlIsRootPath()

BOOLEAN EFIAPI AmlIsRootPath ( IN CONST CHAR8 *  Buffer)

Check whether Buffer is a root path ('\').

This function works for both ASL and AML pathnames. Buffer must be at least 2 bytes long.

Parameters
[in]BufferAn ASL/AML path.
Return values
TRUEBuffer is a root path
FALSEBuffer is not a root path.

Definition at line 112 of file AmlString.c.

◆ AmlParseNameStringInfo()

EFI_STATUS EFIAPI AmlParseNameStringInfo ( IN CONST CHAR8 *  Buffer,
OUT UINT32 *  Root,
OUT UINT32 *  ParentPrefix,
OUT UINT32 *  SegCount 
)

Parse an AML NameString/path.

It is possible to determine the size of an AML NameString/path just by sight reading it. So no overflow can occur. Information found in the AML NameString/path is returned via pointers: Root, ParentPrefix, SegCount.

Parameters
[in]BufferAML NameString/path.
[out]RootPointer holding the number of root char. Can be 0 or 1.
[out]ParentPrefixPointer holding the number of carets char ('^'). Can be [0-255].
[out]SegCountPointer holding the number of NameSeg(s). Can be [0-255].
Return values
EFI_SUCCESSThe function completed successfully.
EFI_INVALID_PARAMETERInvalid parameter.

Definition at line 371 of file AmlString.c.

◆ AmlUpperCaseMemCpyS()

EFI_STATUS EFIAPI AmlUpperCaseMemCpyS ( OUT CHAR8 *  DstBuffer,
IN UINT32  MaxDstBufferSize,
IN CONST CHAR8 *  SrcBuffer,
IN UINT32  Count 
)

Copy bytes from SrcBuffer to DstBuffer and convert to upper case. Don't copy more than MaxDstBufferSize bytes.

Parameters
[out]DstBufferDestination buffer.
[in]MaxDstBufferSizeMaximum size of DstBuffer. Must be non-zero.
[in]SrcBufferSource buffer.
[in]CountCount of bytes to copy from SrcBuffer. Return success if 0.
Return values
EFI_SUCCESSThe function completed successfully.
EFI_INVALID_PARAMETERInvalid parameter.

Definition at line 65 of file AmlString.c.

◆ AslCompareNameString()

BOOLEAN EFIAPI AslCompareNameString ( IN CONST CHAR8 *  AslName1,
IN CONST CHAR8 *  AslName2 
)

Compare two ASL NameStrings.

Parameters
[in]AslName1First NameString to compare.
[in]AslName2Second NameString to compare.
Return values
TRUEif the two strings are identical.
FALSEotherwise, or if error.

Definition at line 873 of file AmlString.c.

◆ AslComputeNameStringSize()

UINT32 EFIAPI AslComputeNameStringSize ( IN UINT32  Root,
IN UINT32  ParentPrefix,
IN UINT32  SegCount 
)

Compute the ASL NameString/path size from NameString information (Root, ParentPrefix, SegCount).

Parameters
[in]RootNumber of root char. Can be 0 or 1.
[in]ParentPrefixNumber of carets char ('^'). Can be [0-255].
[in]SegCountPointer holding the number of NameSeg(s). Can be [0-255].
Returns
Size of the ASL NameString/path.

Definition at line 439 of file AmlString.c.

◆ AslGetNameStringSize()

EFI_STATUS EFIAPI AslGetNameStringSize ( IN CONST CHAR8 *  AslPath,
OUT UINT32 *  AslPathSizePtr 
)

Get the ASL NameString/path size.

Parameters
[in]AslPathAn ASL NameString/path.
[out]AslPathSizePtrPointer holding the ASL NameString/path size.
Return values
EFI_SUCCESSSuccess.
EFI_INVALID_PARAMETERInvalid parameter.

Definition at line 516 of file AmlString.c.

◆ AslIsNameSeg()

BOOLEAN EFIAPI AslIsNameSeg ( IN CONST CHAR8 *  AslBuffer,
OUT UINT32 *  Size 
)

Check whether AslBuffer is an ASL NameSeg.

This function only works for ASL NameStrings/pathnames. ASL NameStrings/pathnames are at most 4 chars long.

Parameters
[in]AslBufferPointer in an ASL NameString/pathname.
[out]SizeSize of the NameSeg.
Return values
TRUEAslBuffer is an ASL NameSeg.
FALSEAslBuffer is not an ASL NameSeg.

Definition at line 200 of file AmlString.c.

◆ AslParseNameStringInfo()

EFI_STATUS EFIAPI AslParseNameStringInfo ( IN CONST CHAR8 *  Buffer,
OUT UINT32 *  Root,
OUT UINT32 *  ParentPrefix,
OUT UINT32 *  SegCount 
)

Parse an ASL NameString/path.

An ASL NameString/path must be NULL terminated. Information found in the ASL NameString/path is returned via pointers: Root, ParentPrefix, SegCount.

Parameters
[in]BufferASL NameString/path.
[out]RootPointer holding the number of root char. Can be 0 or 1.
[out]ParentPrefixPointer holding the number of carets char ('^'). Can be [0-255].
[out]SegCountPointer holding the number of NameSeg (s). Can be [0-255].
Return values
EFI_SUCCESSThe function completed successfully.
EFI_INVALID_PARAMETERInvalid parameter.

Definition at line 286 of file AmlString.c.

◆ CompareAmlWithAslNameString()

BOOLEAN EFIAPI CompareAmlWithAslNameString ( IN CONST CHAR8 *  AmlName1,
IN CONST CHAR8 *  AslName2 
)

Compare an AML NameString and an ASL NameString.

The ASL NameString is converted to an AML NameString before being compared with the ASL NameString. This allows to expand NameSegs shorter than 4 chars. E.g.: AslName: "DEV" will be expanded to "DEV_" before being compared.

Parameters
[in]AmlName1AML NameString to compare.
[in]AslName2ASL NameString to compare.
Return values
TRUEif the two strings are identical.
FALSEotherwise, or if error.

Definition at line 971 of file AmlString.c.

◆ ConvertAmlNameToAslName()

EFI_STATUS EFIAPI ConvertAmlNameToAslName ( IN CONST CHAR8 *  AmlPath,
OUT CHAR8 **  OutAslPath 
)

Convert an AML NameString/path to an ASL NameString/path. The caller must free the memory allocated in this function. using FreePool ().

Parameters
[in]AmlPathAn AML NameString/path.
[out]OutAslPathBuffer containing the ASL path.
Return values
EFI_SUCCESSSuccess.
EFI_INVALID_PARAMETERInvalid parameter.
EFI_OUT_OF_RESOURCESFailed to allocate memory.

Definition at line 761 of file AmlString.c.

◆ ConvertAslNameToAmlName()

EFI_STATUS EFIAPI ConvertAslNameToAmlName ( IN CONST CHAR8 *  AslPath,
OUT CHAR8 **  OutAmlPath 
)

Convert an ASL NameString/path to an AML NameString/path. The caller must free the memory allocated in this function for AmlPath using FreePool ().

Parameters
[in]AslPathAn ASL NameString/path.
[out]OutAmlPathBuffer containing the AML path.
Return values
EFI_SUCCESSSuccess.
EFI_INVALID_PARAMETERInvalid parameter.
EFI_OUT_OF_RESOURCESFailed to allocate memory.

Definition at line 598 of file AmlString.c.