acdebug.h revision 281075
178189Sbrian/******************************************************************************
278189Sbrian *
378189Sbrian * Name: acdebug.h - ACPI/AML debugger
478189Sbrian *
578189Sbrian *****************************************************************************/
66059Samurai
778189Sbrian/*
878189Sbrian * Copyright (C) 2000 - 2015, Intel Corp.
978189Sbrian * All rights reserved.
1078189Sbrian *
1178189Sbrian * Redistribution and use in source and binary forms, with or without
1278189Sbrian * modification, are permitted provided that the following conditions
1378189Sbrian * are met:
1478189Sbrian * 1. Redistributions of source code must retain the above copyright
156059Samurai *    notice, this list of conditions, and the following disclaimer,
1678189Sbrian *    without modification.
1778189Sbrian * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1878189Sbrian *    substantially similar to the "NO WARRANTY" disclaimer below
1978189Sbrian *    ("Disclaimer") and any redistribution must be conditioned upon
2078189Sbrian *    including a substantially similar Disclaimer requirement for further
2178189Sbrian *    binary redistribution.
2278189Sbrian * 3. Neither the names of the above-listed copyright holders nor the names
2378189Sbrian *    of any contributors may be used to endorse or promote products derived
2478189Sbrian *    from this software without specific prior written permission.
2578189Sbrian *
2678189Sbrian * Alternatively, this software may be distributed under the terms of the
276059Samurai * GNU General Public License ("GPL") version 2 as published by the Free
2850479Speter * Software Foundation.
296059Samurai *
3078189Sbrian * NO WARRANTY
3130715Sbrian * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
326059Samurai * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3329048Sbrian * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
346059Samurai * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
356059Samurai * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
366059Samurai * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3776492Sbrian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3840665Sbrian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
3930715Sbrian * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4036285Sbrian * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4130715Sbrian * POSSIBILITY OF SUCH DAMAGES.
4246085Sbrian */
4336285Sbrian
4436285Sbrian#ifndef __ACDEBUG_H__
45102500Sbrian#define __ACDEBUG_H__
4632614Sbrian
4730715Sbrian
4858044Sbrian#define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
4936285Sbrian
5030715Sbriantypedef struct acpi_db_command_info
5130715Sbrian{
5250059Sbrian    char                    *Name;          /* Command Name */
5358037Sbrian    UINT8                   MinArgs;        /* Minimum arguments required */
5458037Sbrian
5558037Sbrian} ACPI_DB_COMMAND_INFO;
5646086Sbrian
5739395Sbriantypedef struct acpi_db_command_help
5839395Sbrian{
5958037Sbrian    UINT8                   LineCount;      /* Number of help lines */
6046686Sbrian    char                    *Invocation;    /* Command Invocation */
6138814Sbrian    char                    *Description;   /* Command Description */
6237009Sbrian
6331343Sbrian} ACPI_DB_COMMAND_HELP;
6430715Sbrian
6530715Sbriantypedef struct acpi_db_argument_info
6630715Sbrian{
6729048Sbrian    char                    *Name;          /* Argument Name */
6846686Sbrian
6931690Sbrian} ACPI_DB_ARGUMENT_INFO;
7036285Sbrian
7136285Sbriantypedef struct acpi_db_execute_walk
7238557Sbrian{
7338557Sbrian    UINT32                  Count;
7463484Sbrian    UINT32                  MaxCount;
7581634Sbrian
7681634Sbrian} ACPI_DB_EXECUTE_WALK;
7729048Sbrian
7836285Sbrian
7936285Sbrian#define PARAM_LIST(pl)                  pl
8030715Sbrian#define DBTEST_OUTPUT_LEVEL(lvl)        if (AcpiGbl_DbOpt_verbose)
8136285Sbrian#define VERBOSE_PRINT(fp)               DBTEST_OUTPUT_LEVEL(lvl) {\
8236285Sbrian                                            AcpiOsPrintf PARAM_LIST(fp);}
8336285Sbrian
8436285Sbrian#define EX_NO_SINGLE_STEP               1
8536285Sbrian#define EX_SINGLE_STEP                  2
8643313Sbrian
8743313Sbrian
8843313Sbrian/*
8981634Sbrian * dbxface - external debugger interfaces
9081634Sbrian */
9136285SbrianACPI_STATUS
9236285SbrianAcpiDbInitialize (
9336285Sbrian    void);
9436285Sbrian
9536285Sbrianvoid
9631690SbrianAcpiDbTerminate (
9740561Sbrian    void);
986059Samurai
9936285SbrianACPI_STATUS
10036285SbrianAcpiDbSingleStep (
10136285Sbrian    ACPI_WALK_STATE         *WalkState,
10236285Sbrian    ACPI_PARSE_OBJECT       *Op,
1036059Samurai    UINT32                  OpType);
10436285Sbrian
10536285Sbrian
10636285Sbrian/*
10736285Sbrian * dbcmds - debug commands and output routines
10836285Sbrian */
1096059SamuraiACPI_NAMESPACE_NODE *
11036285SbrianAcpiDbConvertToNode (
11136285Sbrian    char                    *InString);
11226516Sbrian
11326516Sbrianvoid
11444305SbrianAcpiDbDisplayTableInfo (
11536285Sbrian    char                    *TableArg);
11636285Sbrian
11736285Sbrianvoid
11894894SbrianAcpiDbDisplayTemplate (
11936285Sbrian    char                    *BufferArg);
1206059Samurai
121177100Spisovoid
122177100SpisoAcpiDbUnloadAcpiTable (
12336285Sbrian    char                    *Name);
1246059Samurai
1256059Samuraivoid
1266059SamuraiAcpiDbSendNotify (
1276059Samurai    char                    *Name,
1286059Samurai    UINT32                  Value);
1296059Samurai
13036285Sbrianvoid
1316059SamuraiAcpiDbDisplayInterfaces (
1326059Samurai    char                    *ActionArg,
13336285Sbrian    char                    *InterfaceNameArg);
13436285Sbrian
1356059SamuraiACPI_STATUS
1366059SamuraiAcpiDbSleep (
13758034Sbrian    char                    *ObjectArg);
13858034Sbrian
13958034Sbrianvoid
14058034SbrianAcpiDbDisplayLocks (
14158034Sbrian    void);
14258034Sbrian
14358034Sbrianvoid
14458034SbrianAcpiDbDisplayResources (
14558034Sbrian    char                    *ObjectArg);
14658034Sbrian
14758034SbrianACPI_HW_DEPENDENT_RETURN_VOID (
14858034Sbrianvoid
14958034SbrianAcpiDbDisplayGpes (
15058034Sbrian    void))
15158034Sbrian
15258034Sbrianvoid
153134789SbrianAcpiDbDisplayHandlers (
1546059Samurai    void);
15558034Sbrian
15658034SbrianACPI_HW_DEPENDENT_RETURN_VOID (
15758034Sbrianvoid
15831171SbrianAcpiDbGenerateGpe (
15958034Sbrian    char                    *GpeArg,
16058034Sbrian    char                    *BlockArg))
16131171Sbrian
16231272SbrianACPI_HW_DEPENDENT_RETURN_VOID (
16336285Sbrianvoid
1646059SamuraiAcpiDbGenerateSci (
16536285Sbrian    void))
1666059Samurai
1676059Samuraivoid
16831272SbrianAcpiDbExecuteTest (
16936285Sbrian    char                    *TypeArg);
1706059Samurai
17136285Sbrian
1726059Samurai/*
1736059Samurai * dbconvert - miscellaneous conversion routines
17458044Sbrian */
17558044SbrianACPI_STATUS
1766059SamuraiAcpiDbHexCharToValue (
17758044Sbrian    int                     HexChar,
1786059Samurai    UINT8                   *ReturnValue);
17958044Sbrian
18036285SbrianACPI_STATUS
18158044SbrianAcpiDbConvertToPackage (
18258044Sbrian    char                    *String,
18358044Sbrian    ACPI_OBJECT             *Object);
18432614Sbrian
18558044SbrianACPI_STATUS
18658044SbrianAcpiDbConvertToObject (
18758044Sbrian    ACPI_OBJECT_TYPE        Type,
18858044Sbrian    char                    *String,
18958044Sbrian    ACPI_OBJECT             *Object);
19029048Sbrian
19158044SbrianUINT8 *
19258044SbrianAcpiDbEncodePldBuffer (
19326516Sbrian    ACPI_PLD_INFO           *PldInfo);
19458044Sbrian
19558044Sbrianvoid
19631272SbrianAcpiDbDumpPldBuffer (
197139973Sbrian    ACPI_OBJECT             *ObjDesc);
198139973Sbrian
199139973Sbrian
200139973Sbrian/*
20158044Sbrian * dbmethod - control method commands
20258044Sbrian */
20358044Sbrianvoid
20458044SbrianAcpiDbSetMethodBreakpoint (
20558044Sbrian    char                    *Location,
20658044Sbrian    ACPI_WALK_STATE         *WalkState,
20758044Sbrian    ACPI_PARSE_OBJECT       *Op);
20858044Sbrian
20958044Sbrianvoid
21058044SbrianAcpiDbSetMethodCallBreakpoint (
21158044Sbrian    ACPI_PARSE_OBJECT       *Op);
21258044Sbrian
21358044Sbrianvoid
21458044SbrianAcpiDbSetMethodData (
21558044Sbrian    char                    *TypeArg,
21658044Sbrian    char                    *IndexArg,
21758044Sbrian    char                    *ValueArg);
21858044Sbrian
21958044SbrianACPI_STATUS
22058044SbrianAcpiDbDisassembleMethod (
22158044Sbrian    char                    *Name);
22258044Sbrian
22358044Sbrianvoid
22436285SbrianAcpiDbDisassembleAml (
22558044Sbrian    char                    *Statements,
22658044Sbrian    ACPI_PARSE_OBJECT       *Op);
22736285Sbrian
22858044Sbrianvoid
22958044SbrianAcpiDbBatchExecute (
23058044Sbrian    char                    *CountArg);
23136285Sbrian
23258044Sbrian
23358044Sbrian/*
23458044Sbrian * dbnames - namespace commands
23558044Sbrian */
23658044Sbrianvoid
23758044SbrianAcpiDbSetScope (
23858044Sbrian    char                    *Name);
23958044Sbrian
24058044Sbrianvoid
24158044SbrianAcpiDbDumpNamespace (
24258044Sbrian    char                    *StartArg,
24358044Sbrian    char                    *DepthArg);
24458044Sbrian
24558044Sbrianvoid
24658044SbrianAcpiDbDumpNamespacePaths (
24758044Sbrian    void);
24858044Sbrian
24958044Sbrianvoid
25058044SbrianAcpiDbDumpNamespaceByOwner (
25158044Sbrian    char                    *OwnerArg,
25281634Sbrian    char                    *DepthArg);
25358044Sbrian
25458044SbrianACPI_STATUS
25558044SbrianAcpiDbFindNameInNamespace (
25658044Sbrian    char                    *NameArg);
25758044Sbrian
25858044Sbrianvoid
25958044SbrianAcpiDbCheckPredefinedNames (
26036285Sbrian    void);
261139973Sbrian
262139973SbrianACPI_STATUS
263139973SbrianAcpiDbDisplayObjects (
264139973Sbrian    char                    *ObjTypeArg,
26558044Sbrian    char                    *DisplayCountArg);
26658044Sbrian
26758044Sbrianvoid
26858044SbrianAcpiDbCheckIntegrity (
26958044Sbrian    void);
27058044Sbrian
27158044Sbrianvoid
27258044SbrianAcpiDbFindReferences (
27381634Sbrian    char                    *ObjectArg);
27436285Sbrian
27558044Sbrianvoid
27658044SbrianAcpiDbGetBusInfo (
27758044Sbrian    void);
27858044Sbrian
27958044Sbrian
28036285Sbrian/*
28158044Sbrian * dbdisply - debug display commands
28236285Sbrian */
28358044Sbrianvoid
28458044SbrianAcpiDbDisplayMethodInfo (
28558044Sbrian    ACPI_PARSE_OBJECT       *Op);
28658044Sbrian
28758044Sbrianvoid
28858044SbrianAcpiDbDecodeAndDisplayObject (
28958044Sbrian    char                    *Target,
29058044Sbrian    char                    *OutputType);
29158044Sbrian
29258044Sbrianvoid
29358044SbrianAcpiDbDisplayResultObject (
29458044Sbrian    ACPI_OPERAND_OBJECT     *ObjDesc,
29536285Sbrian    ACPI_WALK_STATE         *WalkState);
29636285Sbrian
29758044SbrianACPI_STATUS
29858044SbrianAcpiDbDisplayAllMethods (
29958044Sbrian    char                    *DisplayCountArg);
30036285Sbrian
30136285Sbrianvoid
30260839SbrianAcpiDbDisplayArguments (
30358044Sbrian    void);
30458044Sbrian
30560922Sbrianvoid
30660839SbrianAcpiDbDisplayLocals (
30758044Sbrian    void);
30858044Sbrian
30958044Sbrianvoid
31058044SbrianAcpiDbDisplayResults (
31158044Sbrian    void);
31258044Sbrian
31358044Sbrianvoid
31458044SbrianAcpiDbDisplayCallingTree (
31558044Sbrian    void);
31658044Sbrian
31758044Sbrianvoid
31858044SbrianAcpiDbDisplayObjectType (
31958044Sbrian    char                    *ObjectArg);
32036285Sbrian
32136285Sbrianvoid
322214011SglebiusAcpiDbDisplayArgumentObject (
32358044Sbrian    ACPI_OPERAND_OBJECT     *ObjDesc,
324214011Sglebius    ACPI_WALK_STATE         *WalkState);
325214011Sglebius
326214011Sglebius
32736285Sbrian/*
32836285Sbrian * dbexec - debugger control method execution
3296059Samurai */
3306059Samuraivoid
33158044SbrianAcpiDbExecute (
33258044Sbrian    char                    *Name,
33358044Sbrian    char                    **Args,
33458044Sbrian    ACPI_OBJECT_TYPE        *Types,
335134789Sbrian    UINT32                  Flags);
33658044Sbrian
33758044Sbrianvoid
33858044SbrianAcpiDbCreateExecutionThreads (
33958044Sbrian    char                    *NumThreadsArg,
34058044Sbrian    char                    *NumLoopsArg,
34158044Sbrian    char                    *MethodNameArg);
34258044Sbrian
34358044Sbrianvoid
34458044SbrianAcpiDbDeleteObjects (
345134789Sbrian    UINT32                  Count,
346134789Sbrian    ACPI_OBJECT             *Objects);
34758044Sbrian
34858044Sbrian#ifdef ACPI_DBG_TRACK_ALLOCATIONS
34958044SbrianUINT32
35058044SbrianAcpiDbGetCacheInfo (
35158044Sbrian    ACPI_MEMORY_LIST        *Cache);
35258044Sbrian#endif
35358044Sbrian
35458044Sbrian
35598243Sbrian/*
35658044Sbrian * dbfileio - Debugger file I/O commands
35758044Sbrian */
35836285SbrianACPI_OBJECT_TYPE
35936285SbrianAcpiDbMatchArgument (
3606059Samurai    char                    *UserArgument,
36136285Sbrian    ACPI_DB_ARGUMENT_INFO   *Arguments);
3626059Samurai
36336285Sbrianvoid
36436285SbrianAcpiDbCloseDebugFile (
36536285Sbrian    void);
36636285Sbrian
36794894Sbrianvoid
36836285SbrianAcpiDbOpenDebugFile (
36994894Sbrian    char                    *Name);
37058042Sbrian
37181634SbrianACPI_STATUS
3726059SamuraiAcpiDbLoadAcpiTable (
37336285Sbrian    char                    *Filename);
37436285Sbrian
37544305SbrianACPI_STATUS
37644305SbrianAcpiDbGetTableFromFile (
37744305Sbrian    char                    *Filename,
37844305Sbrian    ACPI_TABLE_HEADER       **Table);
37981634Sbrian
38094894Sbrian
38136285Sbrian/*
38244455Sbrian * dbhistry - debugger HISTORY command
38336285Sbrian */
38444455Sbrianvoid
38544455SbrianAcpiDbAddToHistory (
38636285Sbrian    char                    *CommandLine);
38736285Sbrian
38836285Sbrianvoid
38936285SbrianAcpiDbDisplayHistory (
39036285Sbrian    void);
39136285Sbrian
39236285Sbrianchar *
39381634SbrianAcpiDbGetFromHistory (
39494894Sbrian    char                    *CommandNumArg);
39536285Sbrian
39658044Sbrianchar *
39758044SbrianAcpiDbGetHistoryByIndex (
39858044Sbrian    UINT32                  CommanddNum);
39958044Sbrian
40081634Sbrian
40181634Sbrian/*
40258044Sbrian * dbinput - user front-end to the AML debugger
40336285Sbrian */
40458044SbrianACPI_STATUS
40558044SbrianAcpiDbCommandDispatch (
40658044Sbrian    char                    *InputBuffer,
40758044Sbrian    ACPI_WALK_STATE         *WalkState,
40858044Sbrian    ACPI_PARSE_OBJECT       *Op);
40981634Sbrian
41081634Sbrianvoid ACPI_SYSTEM_XFACE
41158044SbrianAcpiDbExecuteThread (
41294894Sbrian    void                    *Context);
41381693Sbrian
41481634SbrianACPI_STATUS
41536285SbrianAcpiDbUserCommands (
41636285Sbrian    char                    Prompt,
41736285Sbrian    ACPI_PARSE_OBJECT       *Op);
41836285Sbrian
4196059Samuraichar *
4206059SamuraiAcpiDbGetNextToken (
42132614Sbrian    char                    *String,
42236285Sbrian    char                    **Next,
42332614Sbrian    ACPI_OBJECT_TYPE        *ReturnType);
42436285Sbrian
42532614Sbrian
42636285Sbrian/*
42732614Sbrian * dbstats - Generation and display of ACPI table statistics
42832614Sbrian */
42936285Sbrianvoid
43032614SbrianAcpiDbGenerateStatistics (
43132614Sbrian    ACPI_PARSE_OBJECT       *Root,
43236285Sbrian    BOOLEAN                 IsMethod);
43332614Sbrian
43436285SbrianACPI_STATUS
43536285SbrianAcpiDbDisplayStatistics (
43636285Sbrian    char                    *TypeArg);
43736285Sbrian
43836285Sbrian
43932614Sbrian/*
44032614Sbrian * dbutils - AML debugger utilities
44132614Sbrian */
44232614Sbrianvoid
44332614SbrianAcpiDbSetOutputDestination (
44432614Sbrian    UINT32                  Where);
44532614Sbrian
44636285Sbrianvoid
44736285SbrianAcpiDbDumpExternalObject (
44836285Sbrian    ACPI_OBJECT             *ObjDesc,
44932614Sbrian    UINT32                  Level);
45036285Sbrian
45181634Sbrianvoid
45274049SbrianAcpiDbPrepNamestring (
45355146Sbrian    char                    *Name);
45436285Sbrian
45536285SbrianACPI_NAMESPACE_NODE *
45644305SbrianAcpiDbLocalNsLookup (
45736285Sbrian    char                    *Name);
45836285Sbrian
45936285Sbrianvoid
46036285SbrianAcpiDbUint32ToHexString (
46136285Sbrian    UINT32                  Value,
46281634Sbrian    char                    *Buffer);
46381634Sbrian
46481634Sbrian#endif  /* __ACDEBUG_H__ */
46536285Sbrian