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