diff options
Diffstat (limited to 'source/components/debugger')
| -rw-r--r-- | source/components/debugger/dbcmds.c | 158 | ||||
| -rw-r--r-- | source/components/debugger/dbconvert.c | 525 | ||||
| -rw-r--r-- | source/components/debugger/dbexec.c | 508 | ||||
| -rw-r--r-- | source/components/debugger/dbinput.c | 2 | ||||
| -rw-r--r-- | source/components/debugger/dbmethod.c | 2 | ||||
| -rw-r--r-- | source/components/debugger/dbnames.c | 2 | ||||
| -rw-r--r-- | source/components/debugger/dbutils.c | 2 | ||||
| -rw-r--r-- | source/components/debugger/dbxface.c | 2 | 
8 files changed, 622 insertions, 579 deletions
| diff --git a/source/components/debugger/dbcmds.c b/source/components/debugger/dbcmds.c index 5cd41781765f9..924e683118cab 100644 --- a/source/components/debugger/dbcmds.c +++ b/source/components/debugger/dbcmds.c @@ -87,12 +87,12 @@ AcpiDbDeviceResources (   *   * FUNCTION:    AcpiDbConvertToNode   * - * PARAMETERS:  InString        - String to convert + * PARAMETERS:  InString            - String to convert   *   * RETURN:      Pointer to a NS node   *   * DESCRIPTION: Convert a string to a valid NS pointer. Handles numeric or - *              alpha strings. + *              alphanumeric strings.   *   ******************************************************************************/ @@ -126,9 +126,9 @@ AcpiDbConvertToNode (      }      else      { -        /* Alpha argument */ -        /* The parameter is a name string that must be resolved to a -         * Named obj +        /* +         * Alpha argument: The parameter is a name string that must be +         * resolved to a Namespace object.           */          Node = AcpiDbLocalNsLookup (InString);          if (!Node) @@ -145,7 +145,7 @@ AcpiDbConvertToNode (   *   * FUNCTION:    AcpiDbSleep   * - * PARAMETERS:  ObjectArg       - Desired sleep state (0-5) + * PARAMETERS:  ObjectArg           - Desired sleep state (0-5)   *   * RETURN:      Status   * @@ -236,7 +236,7 @@ AcpiDbDisplayLocks (   *   * FUNCTION:    AcpiDbDisplayTableInfo   * - * PARAMETERS:  TableArg        - String with name of table to be displayed + * PARAMETERS:  TableArg            - Name of table to be displayed   *   * RETURN:      None   * @@ -377,8 +377,8 @@ AcpiDbUnloadAcpiTable (   *   * FUNCTION:    AcpiDbSendNotify   * - * PARAMETERS:  Name            - Name of ACPI object to send the notify to - *              Value           - Value of the notify to send. + * PARAMETERS:  Name                - Name of ACPI object where to send notify + *              Value               - Value of the notify to send.   *   * RETURN:      None   * @@ -416,7 +416,8 @@ AcpiDbSendNotify (      }      else      { -        AcpiOsPrintf ("Named object [%4.4s] Type %s, must be Device/Thermal/Processor type\n", +        AcpiOsPrintf ( +            "Named object [%4.4s] Type %s, must be Device/Thermal/Processor type\n",              AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type));      }  } @@ -453,7 +454,6 @@ AcpiDbDisplayInterfaces (                      ACPI_WAIT_FOREVER);          NextInterface = AcpiGbl_SupportedInterfaces; -          while (NextInterface)          {              if (!(NextInterface->Flags & ACPI_OSI_INVALID)) @@ -518,7 +518,7 @@ AcpiDbDisplayInterfaces (   *   * FUNCTION:    AcpiDbDisplayTemplate   * - * PARAMETERS:  BufferArg           - Buffer name or addrss + * PARAMETERS:  BufferArg           - Buffer name or address   *   * RETURN:      None   * @@ -532,7 +532,7 @@ AcpiDbDisplayTemplate (  {      ACPI_NAMESPACE_NODE     *Node;      ACPI_STATUS             Status; -    ACPI_BUFFER             ReturnObj; +    ACPI_BUFFER             ReturnBuffer;      /* Translate BufferArg to an Named object */ @@ -553,12 +553,12 @@ AcpiDbDisplayTemplate (          return;      } -    ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; -    ReturnObj.Pointer = AcpiGbl_DbBuffer; +    ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; +    ReturnBuffer.Pointer = AcpiGbl_DbBuffer;      /* Attempt to convert the raw buffer to a resource list */ -    Status = AcpiRsCreateResourceList (Node->Object, &ReturnObj); +    Status = AcpiRsCreateResourceList (Node->Object, &ReturnBuffer);      AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);      AcpiDbgLevel |= ACPI_LV_RESOURCES; @@ -573,7 +573,7 @@ AcpiDbDisplayTemplate (      /* Now we can dump the resource list */      AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, -        ReturnObj.Pointer)); +        ReturnBuffer.Pointer));  DumpBuffer:      AcpiOsPrintf ("\nRaw data buffer:\n"); @@ -666,7 +666,8 @@ AcpiDmCompareAmlResources (              {                  if (Aml1[i] != Aml2[i])                  { -                    AcpiOsPrintf ("Mismatch at byte offset %.2X: is %2.2X, should be %2.2X\n", +                    AcpiOsPrintf ( +                        "Mismatch at byte offset %.2X: is %2.2X, should be %2.2X\n",                          i, Aml2[i], Aml1[i]);                  }              } @@ -693,8 +694,8 @@ AcpiDmCompareAmlResources (   *   * FUNCTION:    AcpiDmTestResourceConversion   * - * PARAMETERS:  Node            - Parent device node - *              Name            - resource method name (_CRS) + * PARAMETERS:  Node                - Parent device node + *              Name                - resource method name (_CRS)   *   * RETURN:      Status   * @@ -709,8 +710,8 @@ AcpiDmTestResourceConversion (      char                    *Name)  {      ACPI_STATUS             Status; -    ACPI_BUFFER             ReturnObj; -    ACPI_BUFFER             ResourceObj; +    ACPI_BUFFER             ReturnBuffer; +    ACPI_BUFFER             ResourceBuffer;      ACPI_BUFFER             NewAml;      ACPI_OBJECT             *OriginalAml; @@ -718,12 +719,12 @@ AcpiDmTestResourceConversion (      AcpiOsPrintf ("Resource Conversion Comparison:\n");      NewAml.Length = ACPI_ALLOCATE_LOCAL_BUFFER; -    ReturnObj.Length = ACPI_ALLOCATE_LOCAL_BUFFER; -    ResourceObj.Length = ACPI_ALLOCATE_LOCAL_BUFFER; +    ReturnBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; +    ResourceBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;      /* Get the original _CRS AML resource template */ -    Status = AcpiEvaluateObject (Node, Name, NULL, &ReturnObj); +    Status = AcpiEvaluateObject (Node, Name, NULL, &ReturnBuffer);      if (ACPI_FAILURE (Status))      {          AcpiOsPrintf ("Could not obtain %s: %s\n", @@ -733,7 +734,7 @@ AcpiDmTestResourceConversion (      /* Get the AML resource template, converted to internal resource structs */ -    Status = AcpiGetCurrentResources (Node, &ResourceObj); +    Status = AcpiGetCurrentResources (Node, &ResourceBuffer);      if (ACPI_FAILURE (Status))      {          AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", @@ -743,7 +744,7 @@ AcpiDmTestResourceConversion (      /* Convert internal resource list to external AML resource template */ -    Status = AcpiRsCreateAmlResources (ResourceObj.Pointer, &NewAml); +    Status = AcpiRsCreateAmlResources (ResourceBuffer.Pointer, &NewAml);      if (ACPI_FAILURE (Status))      {          AcpiOsPrintf ("AcpiRsCreateAmlResources failed: %s\n", @@ -753,7 +754,7 @@ AcpiDmTestResourceConversion (      /* Compare original AML to the newly created AML resource list */ -    OriginalAml = ReturnObj.Pointer; +    OriginalAml = ReturnBuffer.Pointer;      AcpiDmCompareAmlResources (          OriginalAml->Buffer.Pointer, (ACPI_RSDESC_SIZE) OriginalAml->Buffer.Length, @@ -763,9 +764,9 @@ AcpiDmTestResourceConversion (      ACPI_FREE (NewAml.Pointer);  Exit2: -    ACPI_FREE (ResourceObj.Pointer); +    ACPI_FREE (ResourceBuffer.Pointer);  Exit1: -    ACPI_FREE (ReturnObj.Pointer); +    ACPI_FREE (ReturnBuffer.Pointer);      return (Status);  } @@ -778,7 +779,8 @@ Exit1:   *   * RETURN:      Status   * - * DESCRIPTION: Simple callback to exercise AcpiWalkResources + * DESCRIPTION: Simple callback to exercise AcpiWalkResources and + *              AcpiWalkResourceBuffer.   *   ******************************************************************************/ @@ -817,7 +819,7 @@ AcpiDbDeviceResources (      ACPI_NAMESPACE_NODE     *PrsNode = NULL;      ACPI_NAMESPACE_NODE     *AeiNode = NULL;      char                    *ParentPath; -    ACPI_BUFFER             ReturnObj; +    ACPI_BUFFER             ReturnBuffer;      ACPI_STATUS             Status; @@ -843,8 +845,8 @@ AcpiDbDeviceResources (      /* Prepare for a return object of arbitrary size */ -    ReturnObj.Pointer = AcpiGbl_DbBuffer; -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +    ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +    ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE;      /* _PRT */ @@ -853,7 +855,7 @@ AcpiDbDeviceResources (      {          AcpiOsPrintf ("Evaluating _PRT\n"); -        Status = AcpiEvaluateObject (PrtNode, NULL, NULL, &ReturnObj); +        Status = AcpiEvaluateObject (PrtNode, NULL, NULL, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("Could not evaluate _PRT: %s\n", @@ -861,10 +863,10 @@ AcpiDbDeviceResources (              goto GetCrs;          } -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiGetIrqRoutingTable (Node, &ReturnObj); +        Status = AcpiGetIrqRoutingTable (Node, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", @@ -883,10 +885,10 @@ GetCrs:      {          AcpiOsPrintf ("Evaluating _CRS\n"); -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiEvaluateObject (CrsNode, NULL, NULL, &ReturnObj); +        Status = AcpiEvaluateObject (CrsNode, NULL, NULL, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("Could not evaluate _CRS: %s\n", @@ -894,7 +896,7 @@ GetCrs:              goto GetPrs;          } -        /* This code is here to exercise the AcpiWalkResources interface */ +        /* This code exercises the AcpiWalkResources interface */          Status = AcpiWalkResources (Node, METHOD_NAME__CRS,              AcpiDbResourceCallback, NULL); @@ -905,12 +907,12 @@ GetCrs:              goto GetPrs;          } -        /* Get the _CRS resource list */ +        /* Get the _CRS resource list (test ALLOCATE buffer) */ -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = NULL; +        ReturnBuffer.Length  = ACPI_ALLOCATE_LOCAL_BUFFER; -        Status = AcpiGetCurrentResources (Node, &ReturnObj); +        Status = AcpiGetCurrentResources (Node, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", @@ -918,26 +920,41 @@ GetCrs:              goto GetPrs;          } +        /* This code exercises the AcpiWalkResourceBuffer interface */ + +        Status = AcpiWalkResourceBuffer (&ReturnBuffer, +            AcpiDbResourceCallback, NULL); +        if (ACPI_FAILURE (Status)) +        { +            AcpiOsPrintf ("AcpiWalkResourceBuffer failed: %s\n", +                AcpiFormatException (Status)); +            goto EndCrs; +        } +          /* Dump the _CRS resource list */          AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, -            ReturnObj.Pointer)); +            ReturnBuffer.Pointer));          /* -         * Perform comparison of original AML to newly created AML. This tests both -         * the AML->Resource conversion and the Resource->Aml conversion. +         * Perform comparison of original AML to newly created AML. This +         * tests both the AML->Resource conversion and the Resource->AML +         * conversion.           */ -        Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS); +        (void) AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS);          /* Execute _SRS with the resource list */ -        Status = AcpiSetCurrentResources (Node, &ReturnObj); +        Status = AcpiSetCurrentResources (Node, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n",                  AcpiFormatException (Status)); -            goto GetPrs; +            goto EndCrs;          } + +EndCrs: +        ACPI_FREE_BUFFER (ReturnBuffer);      } @@ -948,10 +965,10 @@ GetPrs:      {          AcpiOsPrintf ("Evaluating _PRS\n"); -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiEvaluateObject (PrsNode, NULL, NULL, &ReturnObj); +        Status = AcpiEvaluateObject (PrsNode, NULL, NULL, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("Could not evaluate _PRS: %s\n", @@ -959,10 +976,10 @@ GetPrs:              goto GetAei;          } -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiGetPossibleResources (Node, &ReturnObj); +        Status = AcpiGetPossibleResources (Node, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n", @@ -981,10 +998,10 @@ GetAei:      {          AcpiOsPrintf ("Evaluating _AEI\n"); -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiEvaluateObject (AeiNode, NULL, NULL, &ReturnObj); +        Status = AcpiEvaluateObject (AeiNode, NULL, NULL, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("Could not evaluate _AEI: %s\n", @@ -992,10 +1009,10 @@ GetAei:              goto Cleanup;          } -        ReturnObj.Pointer = AcpiGbl_DbBuffer; -        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE; +        ReturnBuffer.Pointer = AcpiGbl_DbBuffer; +        ReturnBuffer.Length  = ACPI_DEBUG_BUFFER_SIZE; -        Status = AcpiGetEventResources (Node, &ReturnObj); +        Status = AcpiGetEventResources (Node, &ReturnBuffer);          if (ACPI_FAILURE (Status))          {              AcpiOsPrintf ("AcpiGetEventResources failed: %s\n", @@ -1017,8 +1034,9 @@ Cleanup:   *   * FUNCTION:    AcpiDbDisplayResources   * - * PARAMETERS:  ObjectArg       - String object name or object pointer. - *                                "*" means "display resources for all devices" + * PARAMETERS:  ObjectArg           - String object name or object pointer. + *                                    "*" means "display resources for all + *                                    devices"   *   * RETURN:      None   * @@ -1071,13 +1089,13 @@ AcpiDbDisplayResources (   *   * FUNCTION:    AcpiDbGenerateGpe   * - * PARAMETERS:  GpeArg          - Raw GPE number, ascii string - *              BlockArg        - GPE block number, ascii string - *                                0 or 1 for FADT GPE blocks + * PARAMETERS:  GpeArg              - Raw GPE number, ascii string + *              BlockArg            - GPE block number, ascii string + *                                    0 or 1 for FADT GPE blocks   *   * RETURN:      None   * - * DESCRIPTION: Generate a GPE + * DESCRIPTION: Simulate firing of a GPE   *   ******************************************************************************/ diff --git a/source/components/debugger/dbconvert.c b/source/components/debugger/dbconvert.c new file mode 100644 index 0000000000000..78a990b8f5237 --- /dev/null +++ b/source/components/debugger/dbconvert.c @@ -0,0 +1,525 @@ +/******************************************************************************* + * + * Module Name: dbconvert - debugger miscellaneous conversion routines + * + ******************************************************************************/ + +/* + * Copyright (C) 2000 - 2012, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions, and the following disclaimer, + *    without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + *    substantially similar to the "NO WARRANTY" disclaimer below + *    ("Disclaimer") and any redistribution must be conditioned upon + *    including a substantially similar Disclaimer requirement for further + *    binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + *    of any contributors may be used to endorse or promote products derived + *    from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + + +#include "acpi.h" +#include "accommon.h" +#include "acdebug.h" + +#ifdef ACPI_DEBUGGER + +#define _COMPONENT          ACPI_CA_DEBUGGER +        ACPI_MODULE_NAME    ("dbconvert") + + +#define DB_DEFAULT_PKG_ELEMENTS     33 + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbHexCharToValue + * + * PARAMETERS:  HexChar             - Ascii Hex digit, 0-9|a-f|A-F + *              ReturnValue         - Where the converted value is returned + * + * RETURN:      Status + * + * DESCRIPTION: Convert a single hex character to a 4-bit number (0-16). + * + ******************************************************************************/ + +ACPI_STATUS +AcpiDbHexCharToValue ( +    int                     HexChar, +    UINT8                   *ReturnValue) +{ +    UINT8                   Value; + + +    /* Digit must be ascii [0-9a-fA-F] */ + +    if (!ACPI_IS_XDIGIT (HexChar)) +    { +        return (AE_BAD_HEX_CONSTANT); +    } + +    if (HexChar <= 0x39) +    { +        Value = (UINT8) (HexChar - 0x30); +    } +    else +    { +        Value = (UINT8) (ACPI_TOUPPER (HexChar) - 0x37); +    } + +    *ReturnValue = Value; +    return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbHexByteToBinary + * + * PARAMETERS:  HexByte             - Double hex digit (0x00 - 0xFF) in format: + *                                    HiByte then LoByte. + *              ReturnValue         - Where the converted value is returned + * + * RETURN:      Status + * + * DESCRIPTION: Convert two hex characters to an 8 bit number (0 - 255). + * + ******************************************************************************/ + +static ACPI_STATUS +AcpiDbHexByteToBinary ( +    char                    *HexByte, +    UINT8                   *ReturnValue) +{ +    UINT8                   Local0; +    UINT8                   Local1; +    ACPI_STATUS             Status; + + +    /* High byte */ + +    Status = AcpiDbHexCharToValue (HexByte[0], &Local0); +    if (ACPI_FAILURE (Status)) +    { +        return (Status); +    } + +    /* Low byte */ + +    Status = AcpiDbHexCharToValue (HexByte[1], &Local1); +    if (ACPI_FAILURE (Status)) +    { +        return (Status); +    } + +    *ReturnValue = (UINT8) ((Local0 << 4) | Local1); +    return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbConvertToBuffer + * + * PARAMETERS:  String              - Input string to be converted + *              Object              - Where the buffer object is returned + * + * RETURN:      Status + * + * DESCRIPTION: Convert a string to a buffer object. String is treated a list + *              of buffer elements, each separated by a space or comma. + * + ******************************************************************************/ + +static ACPI_STATUS +AcpiDbConvertToBuffer ( +    char                    *String, +    ACPI_OBJECT             *Object) +{ +    UINT32                  i; +    UINT32                  j; +    UINT32                  Length; +    UINT8                   *Buffer; +    ACPI_STATUS             Status; + + +    /* Generate the final buffer length */ + +    for (i = 0, Length = 0; String[i];) +    { +        i+=2; +        Length++; + +        while (String[i] && +              ((String[i] == ',') || (String[i] == ' '))) +        { +            i++; +        } +    } + +    Buffer = ACPI_ALLOCATE (Length); +    if (!Buffer) +    { +        return (AE_NO_MEMORY); +    } + +    /* Convert the command line bytes to the buffer */ + +    for (i = 0, j = 0; String[i];) +    { +        Status = AcpiDbHexByteToBinary (&String[i], &Buffer[j]); +        if (ACPI_FAILURE (Status)) +        { +            ACPI_FREE (Buffer); +            return (Status); +        } + +        j++; +        i+=2; +        while (String[i] && +              ((String[i] == ',') || (String[i] == ' '))) +        { +            i++; +        } +    } + +    Object->Type = ACPI_TYPE_BUFFER; +    Object->Buffer.Pointer = Buffer; +    Object->Buffer.Length = Length; +    return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbConvertToPackage + * + * PARAMETERS:  String              - Input string to be converted + *              Object              - Where the package object is returned + * + * RETURN:      Status + * + * DESCRIPTION: Convert a string to a package object. Handles nested packages + *              via recursion with AcpiDbConvertToObject. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiDbConvertToPackage ( +    char                    *String, +    ACPI_OBJECT             *Object) +{ +    char                    *This; +    char                    *Next; +    UINT32                  i; +    ACPI_OBJECT_TYPE        Type; +    ACPI_OBJECT             *Elements; +    ACPI_STATUS             Status; + + +    Elements = ACPI_ALLOCATE_ZEROED ( +        DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT)); + +    This = String; +    for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) +    { +        This = AcpiDbGetNextToken (This, &Next, &Type); +        if (!This) +        { +            break; +        } + +        /* Recursive call to convert each package element */ + +        Status = AcpiDbConvertToObject (Type, This, &Elements[i]); +        if (ACPI_FAILURE (Status)) +        { +            AcpiDbDeleteObjects (i + 1, Elements); +            ACPI_FREE (Elements); +            return (Status); +        } + +        This = Next; +    } + +    Object->Type = ACPI_TYPE_PACKAGE; +    Object->Package.Count = i; +    Object->Package.Elements = Elements; +    return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbConvertToObject + * + * PARAMETERS:  Type                - Object type as determined by parser + *              String              - Input string to be converted + *              Object              - Where the new object is returned + * + * RETURN:      Status + * + * DESCRIPTION: Convert a typed and tokenized string to an ACPI_OBJECT. Typing: + *              1) String objects were surrounded by quotes. + *              2) Buffer objects were surrounded by parentheses. + *              3) Package objects were surrounded by brackets "[]". + *              4) All standalone tokens are treated as integers. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiDbConvertToObject ( +    ACPI_OBJECT_TYPE        Type, +    char                    *String, +    ACPI_OBJECT             *Object) +{ +    ACPI_STATUS             Status = AE_OK; + + +    switch (Type) +    { +    case ACPI_TYPE_STRING: +        Object->Type = ACPI_TYPE_STRING; +        Object->String.Pointer = String; +        Object->String.Length = (UINT32) ACPI_STRLEN (String); +        break; + +    case ACPI_TYPE_BUFFER: +        Status = AcpiDbConvertToBuffer (String, Object); +        break; + +    case ACPI_TYPE_PACKAGE: +        Status = AcpiDbConvertToPackage (String, Object); +        break; + +    default: +        Object->Type = ACPI_TYPE_INTEGER; +        Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value); +        break; +    } + +    return (Status); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbEncodePldBuffer + * + * PARAMETERS:  PldInfo             - _PLD buffer struct (Using local struct) + * + * RETURN:      Encode _PLD buffer suitable for return value from _PLD + * + * DESCRIPTION: Bit-packs a _PLD buffer struct. Used to test the _PLD macros + * + ******************************************************************************/ + +UINT8 * +AcpiDbEncodePldBuffer ( +    ACPI_PLD_INFO           *PldInfo) +{ +    UINT32                  *Buffer; +    UINT32                  Dword; + + +    Buffer = ACPI_ALLOCATE_ZEROED (ACPI_PLD_BUFFER_SIZE); +    if (!Buffer) +    { +        return (NULL); +    } + +    /* First 32 bits */ + +    Dword = 0; +    ACPI_PLD_SET_REVISION       (&Dword, PldInfo->Revision); +    ACPI_PLD_SET_IGNORE_COLOR   (&Dword, PldInfo->IgnoreColor); +    ACPI_PLD_SET_COLOR          (&Dword, PldInfo->Color); +    ACPI_MOVE_32_TO_32 (&Buffer[0], &Dword); + +    /* Second 32 bits */ + +    Dword = 0; +    ACPI_PLD_SET_WIDTH          (&Dword, PldInfo->Width); +    ACPI_PLD_SET_HEIGHT         (&Dword, PldInfo->Height); +    ACPI_MOVE_32_TO_32 (&Buffer[1], &Dword); + +    /* Third 32 bits */ + +    Dword = 0; +    ACPI_PLD_SET_USER_VISIBLE   (&Dword, PldInfo->UserVisible); +    ACPI_PLD_SET_DOCK           (&Dword, PldInfo->Dock); +    ACPI_PLD_SET_LID            (&Dword, PldInfo->Lid); +    ACPI_PLD_SET_PANEL          (&Dword, PldInfo->Panel); +    ACPI_PLD_SET_VERTICAL       (&Dword, PldInfo->VerticalPosition); +    ACPI_PLD_SET_HORIZONTAL     (&Dword, PldInfo->HorizontalPosition); +    ACPI_PLD_SET_SHAPE          (&Dword, PldInfo->Shape); +    ACPI_PLD_SET_ORIENTATION    (&Dword, PldInfo->GroupOrientation); +    ACPI_PLD_SET_TOKEN          (&Dword, PldInfo->GroupToken); +    ACPI_PLD_SET_POSITION       (&Dword, PldInfo->GroupPosition); +    ACPI_PLD_SET_BAY            (&Dword, PldInfo->Bay); +    ACPI_MOVE_32_TO_32 (&Buffer[2], &Dword); + +    /* Fourth 32 bits */ + +    Dword = 0; +    ACPI_PLD_SET_EJECTABLE      (&Dword, PldInfo->Ejectable); +    ACPI_PLD_SET_OSPM_EJECT     (&Dword, PldInfo->OspmEjectRequired); +    ACPI_PLD_SET_CABINET        (&Dword, PldInfo->CabinetNumber); +    ACPI_PLD_SET_CARD_CAGE      (&Dword, PldInfo->CardCageNumber); +    ACPI_PLD_SET_REFERENCE      (&Dword, PldInfo->Reference); +    ACPI_PLD_SET_ROTATION       (&Dword, PldInfo->Rotation); +    ACPI_PLD_SET_ORDER          (&Dword, PldInfo->Order); +    ACPI_MOVE_32_TO_32 (&Buffer[3], &Dword); + +    if (PldInfo->Revision >= 2) +    { +        /* Fifth 32 bits */ + +        Dword = 0; +        ACPI_PLD_SET_VERT_OFFSET    (&Dword, PldInfo->VerticalOffset); +        ACPI_PLD_SET_HORIZ_OFFSET   (&Dword, PldInfo->HorizontalOffset); +        ACPI_MOVE_32_TO_32 (&Buffer[4], &Dword); +    } + +    return (ACPI_CAST_PTR (UINT8, Buffer)); +} + + +/******************************************************************************* + * + * FUNCTION:    AcpiDbDumpPldBuffer + * + * PARAMETERS:  ObjDesc             - Object returned from _PLD method + * + * RETURN:      None. + * + * DESCRIPTION: Dumps formatted contents of a _PLD return buffer. + * + ******************************************************************************/ + +#define ACPI_PLD_OUTPUT     "%20s : %-6X\n" + +void +AcpiDbDumpPldBuffer ( +    ACPI_OBJECT             *ObjDesc) +{ +    ACPI_OBJECT             *BufferDesc; +    ACPI_PLD_INFO           *PldInfo; +    UINT8                   *NewBuffer; +    ACPI_STATUS             Status; + + +    /* Object must be of type Package with at least one Buffer element */ + +    if (ObjDesc->Type != ACPI_TYPE_PACKAGE) +    { +        return; +    } + +    BufferDesc = &ObjDesc->Package.Elements[0]; +    if (BufferDesc->Type != ACPI_TYPE_BUFFER) +    { +        return; +    } + +    /* Convert _PLD buffer to local _PLD struct */ + +    Status = AcpiDecodePldBuffer (BufferDesc->Buffer.Pointer, +        BufferDesc->Buffer.Length, &PldInfo); +    if (ACPI_FAILURE (Status)) +    { +        return; +    } + +    /* Encode local _PLD struct back to a _PLD buffer */ + +    NewBuffer = AcpiDbEncodePldBuffer (PldInfo); +    if (!NewBuffer) +    { +        return; +    } + +    /* The two bit-packed buffers should match */ + +    if (ACPI_MEMCMP (NewBuffer, BufferDesc->Buffer.Pointer, +        BufferDesc->Buffer.Length)) +    { +        AcpiOsPrintf ("Converted _PLD buffer does not compare. New:\n"); + +        AcpiUtDumpBuffer (NewBuffer, +            BufferDesc->Buffer.Length, DB_BYTE_DISPLAY, 0); +    } + +    /* First 32-bit dword */ + +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Revision", PldInfo->Revision); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "IgnoreColor", PldInfo->IgnoreColor); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Color", PldInfo->Color); + +    /* Second 32-bit dword */ + +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Width", PldInfo->Width); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Height", PldInfo->Height); + +    /* Third 32-bit dword */ + +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "UserVisible", PldInfo->UserVisible); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Dock", PldInfo->Dock); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Lid", PldInfo->Lid); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Panel", PldInfo->Panel); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalPosition", PldInfo->VerticalPosition); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalPosition", PldInfo->HorizontalPosition); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Shape", PldInfo->Shape); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupOrientation", PldInfo->GroupOrientation); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupToken", PldInfo->GroupToken); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupPosition", PldInfo->GroupPosition); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Bay", PldInfo->Bay); + +    /* Fourth 32-bit dword */ + +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Ejectable", PldInfo->Ejectable); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "OspmEjectRequired", PldInfo->OspmEjectRequired); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "CabinetNumber", PldInfo->CabinetNumber); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "CardCageNumber", PldInfo->CardCageNumber); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Reference", PldInfo->Reference); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Rotation", PldInfo->Rotation); +    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Order", PldInfo->Order); + +    /* Fifth 32-bit dword */ + +    if (BufferDesc->Buffer.Length > 16) +    { +        AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalOffset", PldInfo->VerticalOffset); +        AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalOffset", PldInfo->HorizontalOffset); +    } + +    ACPI_FREE (PldInfo); +    ACPI_FREE (NewBuffer); +} + +#endif /* ACPI_DEBUGGER */ diff --git a/source/components/debugger/dbexec.c b/source/components/debugger/dbexec.c index 1644fc23a5f84..19cf056161412 100644 --- a/source/components/debugger/dbexec.c +++ b/source/components/debugger/dbexec.c @@ -54,7 +54,6 @@  static ACPI_DB_METHOD_INFO          AcpiGbl_DbMethodInfo; -#define DB_DEFAULT_PKG_ELEMENTS     33  /* Local prototypes */ @@ -82,308 +81,6 @@ AcpiDbExecutionWalk (      void                    *Context,      void                    **ReturnValue); -static ACPI_STATUS -AcpiDbHexCharToValue ( -    int                     HexChar, -    UINT8                   *ReturnValue); - -static ACPI_STATUS -AcpiDbConvertToPackage ( -    char                    *String, -    ACPI_OBJECT             *Object); - -static ACPI_STATUS -AcpiDbConvertToObject ( -    ACPI_OBJECT_TYPE        Type, -    char                    *String, -    ACPI_OBJECT             *Object); - -static void -AcpiDbDeleteObjects ( -    UINT32                  Count, -    ACPI_OBJECT             *Objects); - - -static UINT8 * -AcpiDbEncodePldBuffer ( -    ACPI_PLD_INFO           *PldInfo); - -static void -AcpiDbDumpPldBuffer ( -    ACPI_OBJECT             *ObjDesc); - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbHexCharToValue - * - * PARAMETERS:  HexChar             - Ascii Hex digit, 0-9|a-f|A-F - *              ReturnValue         - Where the converted value is returned - * - * RETURN:      Status - * - * DESCRIPTION: Convert a single hex character to a 4-bit number (0-16). - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbHexCharToValue ( -    int                     HexChar, -    UINT8                   *ReturnValue) -{ -    UINT8                   Value; - - -    /* Digit must be ascii [0-9a-fA-F] */ - -    if (!ACPI_IS_XDIGIT (HexChar)) -    { -        return (AE_BAD_HEX_CONSTANT); -    } - -    if (HexChar <= 0x39) -    { -        Value = (UINT8) (HexChar - 0x30); -    } -    else -    { -        Value = (UINT8) (ACPI_TOUPPER (HexChar) - 0x37); -    } - -    *ReturnValue = Value; -    return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbHexByteToBinary - * - * PARAMETERS:  HexByte             - Double hex digit (0x00 - 0xFF) in format: - *                                    HiByte then LoByte. - *              ReturnValue         - Where the converted value is returned - * - * RETURN:      Status - * - * DESCRIPTION: Convert two hex characters to an 8 bit number (0 - 255). - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbHexByteToBinary ( -    char                    *HexByte, -    UINT8                   *ReturnValue) -{ -    UINT8                   Local0; -    UINT8                   Local1; -    ACPI_STATUS             Status; - - -    /* High byte */ - -    Status = AcpiDbHexCharToValue (HexByte[0], &Local0); -    if (ACPI_FAILURE (Status)) -    { -        return (Status); -    } - -    /* Low byte */ - -    Status = AcpiDbHexCharToValue (HexByte[1], &Local1); -    if (ACPI_FAILURE (Status)) -    { -        return (Status); -    } - -    *ReturnValue = (UINT8) ((Local0 << 4) | Local1); -    return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbConvertToBuffer - * - * PARAMETERS:  String              - Input string to be converted - *              Object              - Where the buffer object is returned - * - * RETURN:      Status - * - * DESCRIPTION: Convert a string to a buffer object. String is treated a list - *              of buffer elements, each separated by a space or comma. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbConvertToBuffer ( -    char                    *String, -    ACPI_OBJECT             *Object) -{ -    UINT32                  i; -    UINT32                  j; -    UINT32                  Length; -    UINT8                   *Buffer; -    ACPI_STATUS             Status; - - -    /* Generate the final buffer length */ - -    for (i = 0, Length = 0; String[i];) -    { -        i+=2; -        Length++; - -        while (String[i] && -              ((String[i] == ',') || (String[i] == ' '))) -        { -            i++; -        } -    } - -    Buffer = ACPI_ALLOCATE (Length); -    if (!Buffer) -    { -        return (AE_NO_MEMORY); -    } - -    /* Convert the command line bytes to the buffer */ - -    for (i = 0, j = 0; String[i];) -    { -        Status = AcpiDbHexByteToBinary (&String[i], &Buffer[j]); -        if (ACPI_FAILURE (Status)) -        { -            ACPI_FREE (Buffer); -            return (Status); -        } - -        j++; -        i+=2; -        while (String[i] && -              ((String[i] == ',') || (String[i] == ' '))) -        { -            i++; -        } -    } - -    Object->Type = ACPI_TYPE_BUFFER; -    Object->Buffer.Pointer = Buffer; -    Object->Buffer.Length = Length; -    return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbConvertToPackage - * - * PARAMETERS:  String              - Input string to be converted - *              Object              - Where the package object is returned - * - * RETURN:      Status - * - * DESCRIPTION: Convert a string to a package object. Handles nested packages - *              via recursion with AcpiDbConvertToObject. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbConvertToPackage ( -    char                    *String, -    ACPI_OBJECT             *Object) -{ -    char                    *This; -    char                    *Next; -    UINT32                  i; -    ACPI_OBJECT_TYPE        Type; -    ACPI_OBJECT             *Elements; -    ACPI_STATUS             Status; - - -    Elements = ACPI_ALLOCATE_ZEROED ( -        DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT)); - -    This = String; -    for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) -    { -        This = AcpiDbGetNextToken (This, &Next, &Type); -        if (!This) -        { -            break; -        } - -        /* Recursive call to convert each package element */ - -        Status = AcpiDbConvertToObject (Type, This, &Elements[i]); -        if (ACPI_FAILURE (Status)) -        { -            AcpiDbDeleteObjects (i + 1, Elements); -            ACPI_FREE (Elements); -            return (Status); -        } - -        This = Next; -    } - -    Object->Type = ACPI_TYPE_PACKAGE; -    Object->Package.Count = i; -    Object->Package.Elements = Elements; -    return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbConvertToObject - * - * PARAMETERS:  Type                - Object type as determined by parser - *              String              - Input string to be converted - *              Object              - Where the new object is returned - * - * RETURN:      Status - * - * DESCRIPTION: Convert a typed and tokenized string to an ACPI_OBJECT. Typing: - *              1) String objects were surrounded by quotes. - *              2) Buffer objects were surrounded by parentheses. - *              3) Package objects were surrounded by brackets "[]". - *              4) All standalone tokens are treated as integers. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbConvertToObject ( -    ACPI_OBJECT_TYPE        Type, -    char                    *String, -    ACPI_OBJECT             *Object) -{ -    ACPI_STATUS             Status = AE_OK; - - -    switch (Type) -    { -    case ACPI_TYPE_STRING: -        Object->Type = ACPI_TYPE_STRING; -        Object->String.Pointer = String; -        Object->String.Length = (UINT32) ACPI_STRLEN (String); -        break; - -    case ACPI_TYPE_BUFFER: -        Status = AcpiDbConvertToBuffer (String, Object); -        break; - -    case ACPI_TYPE_PACKAGE: -        Status = AcpiDbConvertToPackage (String, Object); -        break; - -    default: -        Object->Type = ACPI_TYPE_INTEGER; -        Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value); -        break; -    } - -    return (Status); -} -  /*******************************************************************************   * @@ -399,7 +96,7 @@ AcpiDbConvertToObject (   *   ******************************************************************************/ -static void +void  AcpiDbDeleteObjects (      UINT32                  Count,      ACPI_OBJECT             *Objects) @@ -720,202 +417,6 @@ AcpiDbExecutionWalk (  /*******************************************************************************   * - * FUNCTION:    AcpiDbEncodePldBuffer - * - * PARAMETERS:  PldInfo             - _PLD buffer struct (Using local struct) - * - * RETURN:      Encode _PLD buffer suitable for return value from _PLD - * - * DESCRIPTION: Bit-packs a _PLD buffer struct. Used to test the _PLD macros - * - ******************************************************************************/ - -static UINT8 * -AcpiDbEncodePldBuffer ( -    ACPI_PLD_INFO           *PldInfo) -{ -    UINT32                  *Buffer; -    UINT32                  Dword; - - -    Buffer = ACPI_ALLOCATE_ZEROED (ACPI_PLD_BUFFER_SIZE); -    if (!Buffer) -    { -        return (NULL); -    } - -    /* First 32 bits */ - -    Dword = 0; -    ACPI_PLD_SET_REVISION       (&Dword, PldInfo->Revision); -    ACPI_PLD_SET_IGNORE_COLOR   (&Dword, PldInfo->IgnoreColor); -    ACPI_PLD_SET_COLOR          (&Dword, PldInfo->Color); -    ACPI_MOVE_32_TO_32 (&Buffer[0], &Dword); - -    /* Second 32 bits */ - -    Dword = 0; -    ACPI_PLD_SET_WIDTH          (&Dword, PldInfo->Width); -    ACPI_PLD_SET_HEIGHT         (&Dword, PldInfo->Height); -    ACPI_MOVE_32_TO_32 (&Buffer[1], &Dword); - -    /* Third 32 bits */ - -    Dword = 0; -    ACPI_PLD_SET_USER_VISIBLE   (&Dword, PldInfo->UserVisible); -    ACPI_PLD_SET_DOCK           (&Dword, PldInfo->Dock); -    ACPI_PLD_SET_LID            (&Dword, PldInfo->Lid); -    ACPI_PLD_SET_PANEL          (&Dword, PldInfo->Panel); -    ACPI_PLD_SET_VERTICAL       (&Dword, PldInfo->VerticalPosition); -    ACPI_PLD_SET_HORIZONTAL     (&Dword, PldInfo->HorizontalPosition); -    ACPI_PLD_SET_SHAPE          (&Dword, PldInfo->Shape); -    ACPI_PLD_SET_ORIENTATION    (&Dword, PldInfo->GroupOrientation); -    ACPI_PLD_SET_TOKEN          (&Dword, PldInfo->GroupToken); -    ACPI_PLD_SET_POSITION       (&Dword, PldInfo->GroupPosition); -    ACPI_PLD_SET_BAY            (&Dword, PldInfo->Bay); -    ACPI_MOVE_32_TO_32 (&Buffer[2], &Dword); - -    /* Fourth 32 bits */ - -    Dword = 0; -    ACPI_PLD_SET_EJECTABLE      (&Dword, PldInfo->Ejectable); -    ACPI_PLD_SET_OSPM_EJECT     (&Dword, PldInfo->OspmEjectRequired); -    ACPI_PLD_SET_CABINET        (&Dword, PldInfo->CabinetNumber); -    ACPI_PLD_SET_CARD_CAGE      (&Dword, PldInfo->CardCageNumber); -    ACPI_PLD_SET_REFERENCE      (&Dword, PldInfo->Reference); -    ACPI_PLD_SET_ROTATION       (&Dword, PldInfo->Rotation); -    ACPI_PLD_SET_ORDER          (&Dword, PldInfo->Order); -    ACPI_MOVE_32_TO_32 (&Buffer[3], &Dword); - -    if (PldInfo->Revision >= 2) -    { -        /* Fifth 32 bits */ - -        Dword = 0; -        ACPI_PLD_SET_VERT_OFFSET    (&Dword, PldInfo->VerticalOffset); -        ACPI_PLD_SET_HORIZ_OFFSET   (&Dword, PldInfo->HorizontalOffset); -        ACPI_MOVE_32_TO_32 (&Buffer[4], &Dword); -    } - -    return (ACPI_CAST_PTR (UINT8, Buffer)); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiDbDumpPldBuffer - * - * PARAMETERS:  ObjDesc             - Object returned from _PLD method - * - * RETURN:      None. - * - * DESCRIPTION: Dumps formatted contents of a _PLD return buffer. - * - ******************************************************************************/ - -#define ACPI_PLD_OUTPUT     "%20s : %-6X\n" - -static void -AcpiDbDumpPldBuffer ( -    ACPI_OBJECT             *ObjDesc) -{ -    ACPI_OBJECT             *BufferDesc; -    ACPI_PLD_INFO           *PldInfo; -    UINT8                   *NewBuffer; -    ACPI_STATUS             Status; - - -    /* Object must be of type Package with at least one Buffer element */ - -    if (ObjDesc->Type != ACPI_TYPE_PACKAGE) -    { -        return; -    } - -    BufferDesc = &ObjDesc->Package.Elements[0]; -    if (BufferDesc->Type != ACPI_TYPE_BUFFER) -    { -        return; -    } - -    /* Convert _PLD buffer to local _PLD struct */ - -    Status = AcpiDecodePldBuffer (BufferDesc->Buffer.Pointer, -        BufferDesc->Buffer.Length, &PldInfo); -    if (ACPI_FAILURE (Status)) -    { -        return; -    } - -    /* Encode local _PLD struct back to a _PLD buffer */ - -    NewBuffer = AcpiDbEncodePldBuffer (PldInfo); -    if (!NewBuffer) -    { -        return; -    } - -    /* The two bit-packed buffers should match */ - -    if (ACPI_MEMCMP (NewBuffer, BufferDesc->Buffer.Pointer, -        BufferDesc->Buffer.Length)) -    { -        AcpiOsPrintf ("Converted _PLD buffer does not compare. New:\n"); - -        AcpiUtDumpBuffer (NewBuffer, -            BufferDesc->Buffer.Length, DB_BYTE_DISPLAY, 0); -    } - -    /* First 32-bit dword */ - -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Revision", PldInfo->Revision); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "IgnoreColor", PldInfo->IgnoreColor); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Color", PldInfo->Color); - -    /* Second 32-bit dword */ - -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Width", PldInfo->Width); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Height", PldInfo->Height); - -    /* Third 32-bit dword */ - -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "UserVisible", PldInfo->UserVisible); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Dock", PldInfo->Dock); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Lid", PldInfo->Lid); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Panel", PldInfo->Panel); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalPosition", PldInfo->VerticalPosition); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalPosition", PldInfo->HorizontalPosition); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Shape", PldInfo->Shape); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupOrientation", PldInfo->GroupOrientation); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupToken", PldInfo->GroupToken); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupPosition", PldInfo->GroupPosition); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Bay", PldInfo->Bay); - -    /* Fourth 32-bit dword */ - -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Ejectable", PldInfo->Ejectable); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "OspmEjectRequired", PldInfo->OspmEjectRequired); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "CabinetNumber", PldInfo->CabinetNumber); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "CardCageNumber", PldInfo->CardCageNumber); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Reference", PldInfo->Reference); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Rotation", PldInfo->Rotation); -    AcpiOsPrintf (ACPI_PLD_OUTPUT, "Order", PldInfo->Order); - -    /* Fifth 32-bit dword */ - -    if (BufferDesc->Buffer.Length > 16) -    { -        AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalOffset", PldInfo->VerticalOffset); -        AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalOffset", PldInfo->HorizontalOffset); -    } - -    ACPI_FREE (PldInfo); -    ACPI_FREE (NewBuffer); -} - - -/******************************************************************************* - *   * FUNCTION:    AcpiDbExecute   *   * PARAMETERS:  Name                - Name of method to execute @@ -983,12 +484,10 @@ AcpiDbExecute (          Status = AcpiGetHandle (NULL, AcpiGbl_DbMethodInfo.Pathname,              &AcpiGbl_DbMethodInfo.Method); -        if (ACPI_FAILURE (Status)) +        if (ACPI_SUCCESS (Status))          { -            return; +            Status = AcpiDbExecuteMethod (&AcpiGbl_DbMethodInfo, &ReturnObj);          } - -        Status = AcpiDbExecuteMethod (&AcpiGbl_DbMethodInfo, &ReturnObj);          ACPI_FREE (NameString);      } @@ -998,7 +497,6 @@ AcpiDbExecute (       */      AcpiOsSleep ((UINT64) 10); -  #ifdef ACPI_DEBUG_OUTPUT      /* Memory allocation tracking */ diff --git a/source/components/debugger/dbinput.c b/source/components/debugger/dbinput.c index d9c01c8c4ab31..077ad7ebae8f1 100644 --- a/source/components/debugger/dbinput.c +++ b/source/components/debugger/dbinput.c @@ -1168,6 +1168,8 @@ AcpiDbUserCommands (      ACPI_STATUS             Status = AE_OK; +    AcpiOsPrintf ("\n"); +      /* TBD: [Restructure] Need a separate command line buffer for step mode */      while (!AcpiGbl_DbTerminateThreads) diff --git a/source/components/debugger/dbmethod.c b/source/components/debugger/dbmethod.c index c3266c51e2599..4e36aa51535ed 100644 --- a/source/components/debugger/dbmethod.c +++ b/source/components/debugger/dbmethod.c @@ -394,7 +394,7 @@ AcpiDbDisassembleMethod (      WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE;      Status = AcpiPsParseAml (WalkState); -    AcpiDmParseDeferredOps (Op); +    (void) AcpiDmParseDeferredOps (Op);      /* Now we can disassemble the method */ diff --git a/source/components/debugger/dbnames.c b/source/components/debugger/dbnames.c index a51c08d2cb988..d356019c65441 100644 --- a/source/components/debugger/dbnames.c +++ b/source/components/debugger/dbnames.c @@ -159,7 +159,7 @@ AcpiDbSetScope (      AcpiDbPrepNamestring (Name); -    if (Name[0] == '\\') +    if (ACPI_IS_ROOT_PREFIX (Name[0]))      {          /* Validate new scope from the root */ diff --git a/source/components/debugger/dbutils.c b/source/components/debugger/dbutils.c index 947dd9d93a7b8..7da73c1debd12 100644 --- a/source/components/debugger/dbutils.c +++ b/source/components/debugger/dbutils.c @@ -286,7 +286,7 @@ AcpiDbPrepNamestring (      /* Ignore a leading backslash, this is the root prefix */ -    if (*Name == '\\') +    if (ACPI_IS_ROOT_PREFIX (*Name))      {          Name++;      } diff --git a/source/components/debugger/dbxface.c b/source/components/debugger/dbxface.c index 0a7b9465eb1db..c9388dcf98caa 100644 --- a/source/components/debugger/dbxface.c +++ b/source/components/debugger/dbxface.c @@ -433,7 +433,7 @@ AcpiDbInitialize (      /* Initial scope is the root */ -    AcpiGbl_DbScopeBuf [0] = '\\'; +    AcpiGbl_DbScopeBuf [0] = AML_ROOT_PREFIX;      AcpiGbl_DbScopeBuf [1] =  0;      AcpiGbl_DbScopeNode = AcpiGbl_RootNode; | 
