diff options
Diffstat (limited to 'source/components/executer/exdebug.c')
| -rw-r--r-- | source/components/executer/exdebug.c | 384 | 
1 files changed, 6 insertions, 378 deletions
| diff --git a/source/components/executer/exdebug.c b/source/components/executer/exdebug.c index f50d07b17945..4d97cda0d372 100644 --- a/source/components/executer/exdebug.c +++ b/source/components/executer/exdebug.c @@ -43,26 +43,13 @@  #include "acpi.h"  #include "accommon.h" -#include "acnamesp.h"  #include "acinterp.h" -#include "acparser.h"  #define _COMPONENT          ACPI_EXECUTER          ACPI_MODULE_NAME    ("exdebug") -static ACPI_OPERAND_OBJECT  *AcpiGbl_TraceMethodObject = NULL; - -/* Local prototypes */ - -#ifdef ACPI_DEBUG_OUTPUT -static const char * -AcpiExGetTraceEventName ( -    ACPI_TRACE_EVENT_TYPE   Type); -#endif - -  #ifndef ACPI_NO_ERROR_MESSAGES  /*******************************************************************************   * @@ -153,7 +140,7 @@ AcpiExDoDebugObject (      {          AcpiOsPrintf ("%s: %p\n",              AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), -            SourceDesc); +                SourceDesc);          return_VOID;      }      else @@ -205,7 +192,7 @@ AcpiExDoDebugObject (          for (i = 0; i < SourceDesc->Package.Count; i++)          {              AcpiExDoDebugObject (SourceDesc->Package.Elements[i], -                Level+4, i+1); +                Level + 4, i + 1);          }          break; @@ -241,7 +228,7 @@ AcpiExDoDebugObject (          if (SourceDesc->Reference.Node)          {              if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Node) != -                    ACPI_DESC_TYPE_NAMED) +                ACPI_DESC_TYPE_NAMED)              {                  AcpiOsPrintf (" %p - Not a valid namespace node\n",                      SourceDesc->Reference.Node); @@ -266,7 +253,7 @@ AcpiExDoDebugObject (                  default:                      AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, -                        Level+4, 0); +                        Level + 4, 0);                      break;                  }              } @@ -274,11 +261,11 @@ AcpiExDoDebugObject (          else if (SourceDesc->Reference.Object)          {              if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == -                    ACPI_DESC_TYPE_NAMED) +                ACPI_DESC_TYPE_NAMED)              {                  AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *)                      SourceDesc->Reference.Object)->Object, -                    Level+4, 0); +                    Level + 4, 0);              }              else              { @@ -327,362 +314,3 @@ AcpiExDoDebugObject (      return_VOID;  }  #endif - - -/******************************************************************************* - * - * FUNCTION:    AcpiExInterpreterTraceEnabled - * - * PARAMETERS:  Name                - Whether method name should be matched, - *                                    this should be checked before starting - *                                    the tracer - * - * RETURN:      TRUE if interpreter trace is enabled. - * - * DESCRIPTION: Check whether interpreter trace is enabled - * - ******************************************************************************/ - -static BOOLEAN -AcpiExInterpreterTraceEnabled ( -    char                    *Name) -{ - -    /* Check if tracing is enabled */ - -    if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) -    { -        return (FALSE); -    } - -    /* -     * Check if tracing is filtered: -     * -     * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have -     *    been filled by the trace starter -     * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be -     *    matched if it is specified -     * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should -     *    not be cleared by the trace stopper during the first match -     */ -    if (AcpiGbl_TraceMethodObject) -    { -        return (TRUE); -    } -    if (Name && -        (AcpiGbl_TraceMethodName && -         strcmp (AcpiGbl_TraceMethodName, Name))) -    { -        return (FALSE); -    } -    if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && -        !AcpiGbl_TraceMethodName) -    { -        return (FALSE); -    } - -    return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiExGetTraceEventName - * - * PARAMETERS:  Type            - Trace event type - * - * RETURN:      Trace event name. - * - * DESCRIPTION: Used to obtain the full trace event name. - * - ******************************************************************************/ - -#ifdef ACPI_DEBUG_OUTPUT - -static const char * -AcpiExGetTraceEventName ( -    ACPI_TRACE_EVENT_TYPE   Type) -{ -    switch (Type) -    { -    case ACPI_TRACE_AML_METHOD: - -        return "Method"; - -    case ACPI_TRACE_AML_OPCODE: - -        return "Opcode"; - -    case ACPI_TRACE_AML_REGION: - -        return "Region"; - -    default: - -        return ""; -    } -} - -#endif - - -/******************************************************************************* - * - * FUNCTION:    AcpiExTracePoint - * - * PARAMETERS:  Type                - Trace event type - *              Begin               - TRUE if before execution - *              Aml                 - Executed AML address - *              Pathname            - Object path - * - * RETURN:      None - * - * DESCRIPTION: Internal interpreter execution trace. - * - ******************************************************************************/ - -void -AcpiExTracePoint ( -    ACPI_TRACE_EVENT_TYPE   Type, -    BOOLEAN                 Begin, -    UINT8                   *Aml, -    char                    *Pathname) -{ - -    ACPI_FUNCTION_NAME (ExTracePoint); - - -    if (Pathname) -    { -        ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, -                "%s %s [0x%p:%s] execution.\n", -                AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", -                Aml, Pathname)); -    } -    else -    { -        ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, -                "%s %s [0x%p] execution.\n", -                AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", -                Aml)); -    } -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiExStartTraceMethod - * - * PARAMETERS:  MethodNode          - Node of the method - *              ObjDesc             - The method object - *              WalkState           - current state, NULL if not yet executing - *                                    a method. - * - * RETURN:      None - * - * DESCRIPTION: Start control method execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceMethod ( -    ACPI_NAMESPACE_NODE     *MethodNode, -    ACPI_OPERAND_OBJECT     *ObjDesc, -    ACPI_WALK_STATE         *WalkState) -{ -    ACPI_STATUS             Status; -    char                    *Pathname = NULL; -    BOOLEAN                 Enabled = FALSE; - - -    ACPI_FUNCTION_NAME (ExStartTraceMethod); - - -    if (MethodNode) -    { -        Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); -    } - -    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); -    if (ACPI_FAILURE (Status)) -    { -        goto Exit; -    } - -    Enabled = AcpiExInterpreterTraceEnabled (Pathname); -    if (Enabled && !AcpiGbl_TraceMethodObject) -    { -        AcpiGbl_TraceMethodObject = ObjDesc; -        AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; -        AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; -        AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; -        AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; - -        if (AcpiGbl_TraceDbgLevel) -        { -            AcpiDbgLevel = AcpiGbl_TraceDbgLevel; -        } -        if (AcpiGbl_TraceDbgLayer) -        { -            AcpiDbgLayer = AcpiGbl_TraceDbgLayer; -        } -    } -    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -Exit: -    if (Enabled) -    { -        ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, -                ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); -    } -    if (Pathname) -    { -        ACPI_FREE (Pathname); -    } -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiExStopTraceMethod - * - * PARAMETERS:  MethodNode          - Node of the method - *              ObjDesc             - The method object - *              WalkState           - current state, NULL if not yet executing - *                                    a method. - * - * RETURN:      None - * - * DESCRIPTION: Stop control method execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceMethod ( -    ACPI_NAMESPACE_NODE     *MethodNode, -    ACPI_OPERAND_OBJECT     *ObjDesc, -    ACPI_WALK_STATE         *WalkState) -{ -    ACPI_STATUS             Status; -    char                    *Pathname = NULL; -    BOOLEAN                 Enabled; - - -    ACPI_FUNCTION_NAME (ExStopTraceMethod); - - -    if (MethodNode) -    { -        Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); -    } - -    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); -    if (ACPI_FAILURE (Status)) -    { -        goto ExitPath; -    } - -    Enabled = AcpiExInterpreterTraceEnabled (NULL); - -    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -    if (Enabled) -    { -        ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, -                ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); -    } - -    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); -    if (ACPI_FAILURE (Status)) -    { -        goto ExitPath; -    } - -    /* Check whether the tracer should be stopped */ - -    if (AcpiGbl_TraceMethodObject == ObjDesc) -    { -        /* Disable further tracing if type is one-shot */ - -        if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) -        { -            AcpiGbl_TraceMethodName = NULL; -        } - -        AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; -        AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; -        AcpiGbl_TraceMethodObject = NULL; -    } - -    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -ExitPath: -    if (Pathname) -    { -        ACPI_FREE (Pathname); -    } -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiExStartTraceOpcode - * - * PARAMETERS:  Op                  - The parser opcode object - *              WalkState           - current state, NULL if not yet executing - *                                    a method. - * - * RETURN:      None - * - * DESCRIPTION: Start opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceOpcode ( -    ACPI_PARSE_OBJECT       *Op, -    ACPI_WALK_STATE         *WalkState) -{ - -    ACPI_FUNCTION_NAME (ExStartTraceOpcode); - - -    if (AcpiExInterpreterTraceEnabled (NULL) && -        (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) -    { -        ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, -                Op->Common.Aml, Op->Common.AmlOpName); -    } -} - - -/******************************************************************************* - * - * FUNCTION:    AcpiExStopTraceOpcode - * - * PARAMETERS:  Op                  - The parser opcode object - *              WalkState           - current state, NULL if not yet executing - *                                    a method. - * - * RETURN:      None - * - * DESCRIPTION: Stop opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceOpcode ( -    ACPI_PARSE_OBJECT       *Op, -    ACPI_WALK_STATE         *WalkState) -{ - -    ACPI_FUNCTION_NAME (ExStopTraceOpcode); - - -    if (AcpiExInterpreterTraceEnabled (NULL) && -        (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) -    { -        ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, -                Op->Common.Aml, Op->Common.AmlOpName); -    } -} | 
