1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Name: acdebug.h - ACPI/AML debugger 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7*d244b227SJung-uk Kim /* 8*d244b227SJung-uk Kim * Copyright (C) 2000 - 2011, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11*d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12*d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13*d244b227SJung-uk Kim * are met: 14*d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15*d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16*d244b227SJung-uk Kim * without modification. 17*d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19*d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20*d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21*d244b227SJung-uk Kim * binary redistribution. 22*d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23*d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24*d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26*d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27*d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28*d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30*d244b227SJung-uk Kim * NO WARRANTY 31*d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42*d244b227SJung-uk Kim */ 43a9f12690SJung-uk Kim 44a9f12690SJung-uk Kim #ifndef __ACDEBUG_H__ 45a9f12690SJung-uk Kim #define __ACDEBUG_H__ 46a9f12690SJung-uk Kim 47a9f12690SJung-uk Kim 485a77b11bSJung-uk Kim #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */ 49a9f12690SJung-uk Kim 50a9f12690SJung-uk Kim typedef struct CommandInfo 51a9f12690SJung-uk Kim { 52a9f12690SJung-uk Kim char *Name; /* Command Name */ 53a9f12690SJung-uk Kim UINT8 MinArgs; /* Minimum arguments required */ 54a9f12690SJung-uk Kim 55a9f12690SJung-uk Kim } COMMAND_INFO; 56a9f12690SJung-uk Kim 57a9f12690SJung-uk Kim typedef struct ArgumentInfo 58a9f12690SJung-uk Kim { 59a9f12690SJung-uk Kim char *Name; /* Argument Name */ 60a9f12690SJung-uk Kim 61a9f12690SJung-uk Kim } ARGUMENT_INFO; 62a9f12690SJung-uk Kim 63f556842eSJung-uk Kim typedef struct acpi_execute_walk 64f556842eSJung-uk Kim { 65f556842eSJung-uk Kim UINT32 Count; 66f556842eSJung-uk Kim UINT32 MaxCount; 67f556842eSJung-uk Kim 68f556842eSJung-uk Kim } ACPI_EXECUTE_WALK; 69f556842eSJung-uk Kim 70a9f12690SJung-uk Kim 71a9f12690SJung-uk Kim #define PARAM_LIST(pl) pl 72a9f12690SJung-uk Kim #define DBTEST_OUTPUT_LEVEL(lvl) if (AcpiGbl_DbOpt_verbose) 73a9f12690SJung-uk Kim #define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ 74a9f12690SJung-uk Kim AcpiOsPrintf PARAM_LIST(fp);} 75a9f12690SJung-uk Kim 76a9f12690SJung-uk Kim #define EX_NO_SINGLE_STEP 1 77a9f12690SJung-uk Kim #define EX_SINGLE_STEP 2 78a9f12690SJung-uk Kim 79a9f12690SJung-uk Kim 80a9f12690SJung-uk Kim /* 81a9f12690SJung-uk Kim * dbxface - external debugger interfaces 82a9f12690SJung-uk Kim */ 83a9f12690SJung-uk Kim ACPI_STATUS 84a9f12690SJung-uk Kim AcpiDbInitialize ( 85a9f12690SJung-uk Kim void); 86a9f12690SJung-uk Kim 87a9f12690SJung-uk Kim void 88a9f12690SJung-uk Kim AcpiDbTerminate ( 89a9f12690SJung-uk Kim void); 90a9f12690SJung-uk Kim 91a9f12690SJung-uk Kim ACPI_STATUS 92a9f12690SJung-uk Kim AcpiDbSingleStep ( 93a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState, 94a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op, 95a9f12690SJung-uk Kim UINT32 OpType); 96a9f12690SJung-uk Kim 97a9f12690SJung-uk Kim 98a9f12690SJung-uk Kim /* 99a9f12690SJung-uk Kim * dbcmds - debug commands and output routines 100a9f12690SJung-uk Kim */ 101a9f12690SJung-uk Kim ACPI_STATUS 102a9f12690SJung-uk Kim AcpiDbDisassembleMethod ( 103a9f12690SJung-uk Kim char *Name); 104a9f12690SJung-uk Kim 105a9f12690SJung-uk Kim void 106a9f12690SJung-uk Kim AcpiDbDisplayTableInfo ( 107a9f12690SJung-uk Kim char *TableArg); 108a9f12690SJung-uk Kim 109a9f12690SJung-uk Kim void 110a9f12690SJung-uk Kim AcpiDbUnloadAcpiTable ( 111a9f12690SJung-uk Kim char *TableArg, 112a9f12690SJung-uk Kim char *InstanceArg); 113a9f12690SJung-uk Kim 114a9f12690SJung-uk Kim void 115a9f12690SJung-uk Kim AcpiDbSetMethodBreakpoint ( 116a9f12690SJung-uk Kim char *Location, 117a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState, 118a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 119a9f12690SJung-uk Kim 120a9f12690SJung-uk Kim void 121a9f12690SJung-uk Kim AcpiDbSetMethodCallBreakpoint ( 122a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 123a9f12690SJung-uk Kim 124a9f12690SJung-uk Kim void 125a9f12690SJung-uk Kim AcpiDbGetBusInfo ( 126a9f12690SJung-uk Kim void); 127a9f12690SJung-uk Kim 128a9f12690SJung-uk Kim void 129a9f12690SJung-uk Kim AcpiDbDisassembleAml ( 130a9f12690SJung-uk Kim char *Statements, 131a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 132a9f12690SJung-uk Kim 133a9f12690SJung-uk Kim void 134a9f12690SJung-uk Kim AcpiDbDumpNamespace ( 135a9f12690SJung-uk Kim char *StartArg, 136a9f12690SJung-uk Kim char *DepthArg); 137a9f12690SJung-uk Kim 138a9f12690SJung-uk Kim void 139a9f12690SJung-uk Kim AcpiDbDumpNamespaceByOwner ( 140a9f12690SJung-uk Kim char *OwnerArg, 141a9f12690SJung-uk Kim char *DepthArg); 142a9f12690SJung-uk Kim 143a9f12690SJung-uk Kim void 144a9f12690SJung-uk Kim AcpiDbSendNotify ( 145a9f12690SJung-uk Kim char *Name, 146a9f12690SJung-uk Kim UINT32 Value); 147a9f12690SJung-uk Kim 148a9f12690SJung-uk Kim void 149a9f12690SJung-uk Kim AcpiDbSetMethodData ( 150a9f12690SJung-uk Kim char *TypeArg, 151a9f12690SJung-uk Kim char *IndexArg, 152a9f12690SJung-uk Kim char *ValueArg); 153a9f12690SJung-uk Kim 154a9f12690SJung-uk Kim ACPI_STATUS 155a9f12690SJung-uk Kim AcpiDbDisplayObjects ( 156a9f12690SJung-uk Kim char *ObjTypeArg, 157a9f12690SJung-uk Kim char *DisplayCountArg); 158a9f12690SJung-uk Kim 159709fac06SJung-uk Kim void 160709fac06SJung-uk Kim AcpiDbDisplayInterfaces ( 161709fac06SJung-uk Kim char *ActionArg, 162709fac06SJung-uk Kim char *InterfaceNameArg); 163709fac06SJung-uk Kim 164a9f12690SJung-uk Kim ACPI_STATUS 165a9f12690SJung-uk Kim AcpiDbFindNameInNamespace ( 166a9f12690SJung-uk Kim char *NameArg); 167a9f12690SJung-uk Kim 168a9f12690SJung-uk Kim void 169a9f12690SJung-uk Kim AcpiDbSetScope ( 170a9f12690SJung-uk Kim char *Name); 171a9f12690SJung-uk Kim 172a9f12690SJung-uk Kim ACPI_STATUS 173a9f12690SJung-uk Kim AcpiDbSleep ( 174a9f12690SJung-uk Kim char *ObjectArg); 175a9f12690SJung-uk Kim 176a9f12690SJung-uk Kim void 177a9f12690SJung-uk Kim AcpiDbFindReferences ( 178a9f12690SJung-uk Kim char *ObjectArg); 179a9f12690SJung-uk Kim 180a9f12690SJung-uk Kim void 181a9f12690SJung-uk Kim AcpiDbDisplayLocks ( 182a9f12690SJung-uk Kim void); 183a9f12690SJung-uk Kim 184a9f12690SJung-uk Kim void 185a9f12690SJung-uk Kim AcpiDbDisplayResources ( 186a9f12690SJung-uk Kim char *ObjectArg); 187a9f12690SJung-uk Kim 188a9f12690SJung-uk Kim void 189a9f12690SJung-uk Kim AcpiDbDisplayGpes ( 190a9f12690SJung-uk Kim void); 191a9f12690SJung-uk Kim 192a9f12690SJung-uk Kim void 193a9f12690SJung-uk Kim AcpiDbCheckIntegrity ( 194a9f12690SJung-uk Kim void); 195a9f12690SJung-uk Kim 196a9f12690SJung-uk Kim void 197a9f12690SJung-uk Kim AcpiDbGenerateGpe ( 198a9f12690SJung-uk Kim char *GpeArg, 199a9f12690SJung-uk Kim char *BlockArg); 200a9f12690SJung-uk Kim 201a9f12690SJung-uk Kim void 202a9f12690SJung-uk Kim AcpiDbCheckPredefinedNames ( 203a9f12690SJung-uk Kim void); 204a9f12690SJung-uk Kim 205a9f12690SJung-uk Kim void 206a9f12690SJung-uk Kim AcpiDbBatchExecute ( 207f556842eSJung-uk Kim char *CountArg); 208a9f12690SJung-uk Kim 209a9f12690SJung-uk Kim /* 210a9f12690SJung-uk Kim * dbdisply - debug display commands 211a9f12690SJung-uk Kim */ 212a9f12690SJung-uk Kim void 213a9f12690SJung-uk Kim AcpiDbDisplayMethodInfo ( 214a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 215a9f12690SJung-uk Kim 216a9f12690SJung-uk Kim void 217a9f12690SJung-uk Kim AcpiDbDecodeAndDisplayObject ( 218a9f12690SJung-uk Kim char *Target, 219a9f12690SJung-uk Kim char *OutputType); 220a9f12690SJung-uk Kim 221a9f12690SJung-uk Kim void 222a9f12690SJung-uk Kim AcpiDbDisplayResultObject ( 223a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *ObjDesc, 224a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState); 225a9f12690SJung-uk Kim 226a9f12690SJung-uk Kim ACPI_STATUS 227a9f12690SJung-uk Kim AcpiDbDisplayAllMethods ( 228a9f12690SJung-uk Kim char *DisplayCountArg); 229a9f12690SJung-uk Kim 230a9f12690SJung-uk Kim void 231a9f12690SJung-uk Kim AcpiDbDisplayArguments ( 232a9f12690SJung-uk Kim void); 233a9f12690SJung-uk Kim 234a9f12690SJung-uk Kim void 235a9f12690SJung-uk Kim AcpiDbDisplayLocals ( 236a9f12690SJung-uk Kim void); 237a9f12690SJung-uk Kim 238a9f12690SJung-uk Kim void 239a9f12690SJung-uk Kim AcpiDbDisplayResults ( 240a9f12690SJung-uk Kim void); 241a9f12690SJung-uk Kim 242a9f12690SJung-uk Kim void 243a9f12690SJung-uk Kim AcpiDbDisplayCallingTree ( 244a9f12690SJung-uk Kim void); 245a9f12690SJung-uk Kim 246a9f12690SJung-uk Kim void 247a9f12690SJung-uk Kim AcpiDbDisplayObjectType ( 248a9f12690SJung-uk Kim char *ObjectArg); 249a9f12690SJung-uk Kim 250a9f12690SJung-uk Kim void 251a9f12690SJung-uk Kim AcpiDbDisplayArgumentObject ( 252a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *ObjDesc, 253a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState); 254a9f12690SJung-uk Kim 255d6dd1baeSJung-uk Kim 256a9f12690SJung-uk Kim /* 257a9f12690SJung-uk Kim * dbexec - debugger control method execution 258a9f12690SJung-uk Kim */ 259a9f12690SJung-uk Kim void 260a9f12690SJung-uk Kim AcpiDbExecute ( 261a9f12690SJung-uk Kim char *Name, 262a9f12690SJung-uk Kim char **Args, 263a9f12690SJung-uk Kim UINT32 Flags); 264a9f12690SJung-uk Kim 265a9f12690SJung-uk Kim void 266a9f12690SJung-uk Kim AcpiDbCreateExecutionThreads ( 267a9f12690SJung-uk Kim char *NumThreadsArg, 268a9f12690SJung-uk Kim char *NumLoopsArg, 269a9f12690SJung-uk Kim char *MethodNameArg); 270a9f12690SJung-uk Kim 271a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS 272a9f12690SJung-uk Kim UINT32 273a9f12690SJung-uk Kim AcpiDbGetCacheInfo ( 274a9f12690SJung-uk Kim ACPI_MEMORY_LIST *Cache); 275a9f12690SJung-uk Kim #endif 276a9f12690SJung-uk Kim 277a9f12690SJung-uk Kim 278a9f12690SJung-uk Kim /* 279a9f12690SJung-uk Kim * dbfileio - Debugger file I/O commands 280a9f12690SJung-uk Kim */ 281a9f12690SJung-uk Kim ACPI_OBJECT_TYPE 282a9f12690SJung-uk Kim AcpiDbMatchArgument ( 283a9f12690SJung-uk Kim char *UserArgument, 284a9f12690SJung-uk Kim ARGUMENT_INFO *Arguments); 285a9f12690SJung-uk Kim 286a9f12690SJung-uk Kim void 287a9f12690SJung-uk Kim AcpiDbCloseDebugFile ( 288a9f12690SJung-uk Kim void); 289a9f12690SJung-uk Kim 290a9f12690SJung-uk Kim void 291a9f12690SJung-uk Kim AcpiDbOpenDebugFile ( 292a9f12690SJung-uk Kim char *Name); 293a9f12690SJung-uk Kim 294a9f12690SJung-uk Kim ACPI_STATUS 295a9f12690SJung-uk Kim AcpiDbLoadAcpiTable ( 296a9f12690SJung-uk Kim char *Filename); 297a9f12690SJung-uk Kim 298a9f12690SJung-uk Kim ACPI_STATUS 299a9f12690SJung-uk Kim AcpiDbGetTableFromFile ( 300a9f12690SJung-uk Kim char *Filename, 301a9f12690SJung-uk Kim ACPI_TABLE_HEADER **Table); 302a9f12690SJung-uk Kim 303a9f12690SJung-uk Kim ACPI_STATUS 304a9f12690SJung-uk Kim AcpiDbReadTableFromFile ( 305a9f12690SJung-uk Kim char *Filename, 306a9f12690SJung-uk Kim ACPI_TABLE_HEADER **Table); 307a9f12690SJung-uk Kim 308a9f12690SJung-uk Kim 309a9f12690SJung-uk Kim /* 310a9f12690SJung-uk Kim * dbhistry - debugger HISTORY command 311a9f12690SJung-uk Kim */ 312a9f12690SJung-uk Kim void 313a9f12690SJung-uk Kim AcpiDbAddToHistory ( 314a9f12690SJung-uk Kim char *CommandLine); 315a9f12690SJung-uk Kim 316a9f12690SJung-uk Kim void 317a9f12690SJung-uk Kim AcpiDbDisplayHistory ( 318a9f12690SJung-uk Kim void); 319a9f12690SJung-uk Kim 320a9f12690SJung-uk Kim char * 321a9f12690SJung-uk Kim AcpiDbGetFromHistory ( 322a9f12690SJung-uk Kim char *CommandNumArg); 323a9f12690SJung-uk Kim 324a9f12690SJung-uk Kim 325a9f12690SJung-uk Kim /* 326a9f12690SJung-uk Kim * dbinput - user front-end to the AML debugger 327a9f12690SJung-uk Kim */ 328a9f12690SJung-uk Kim ACPI_STATUS 329a9f12690SJung-uk Kim AcpiDbCommandDispatch ( 330a9f12690SJung-uk Kim char *InputBuffer, 331a9f12690SJung-uk Kim ACPI_WALK_STATE *WalkState, 332a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 333a9f12690SJung-uk Kim 334a9f12690SJung-uk Kim void ACPI_SYSTEM_XFACE 335a9f12690SJung-uk Kim AcpiDbExecuteThread ( 336a9f12690SJung-uk Kim void *Context); 337a9f12690SJung-uk Kim 338a9f12690SJung-uk Kim ACPI_STATUS 339a9f12690SJung-uk Kim AcpiDbUserCommands ( 340a9f12690SJung-uk Kim char Prompt, 341a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op); 342a9f12690SJung-uk Kim 343a9f12690SJung-uk Kim 344a9f12690SJung-uk Kim /* 345a9f12690SJung-uk Kim * dbstats - Generation and display of ACPI table statistics 346a9f12690SJung-uk Kim */ 347a9f12690SJung-uk Kim void 348a9f12690SJung-uk Kim AcpiDbGenerateStatistics ( 349a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Root, 350a9f12690SJung-uk Kim BOOLEAN IsMethod); 351a9f12690SJung-uk Kim 352a9f12690SJung-uk Kim ACPI_STATUS 353a9f12690SJung-uk Kim AcpiDbDisplayStatistics ( 354a9f12690SJung-uk Kim char *TypeArg); 355a9f12690SJung-uk Kim 356a9f12690SJung-uk Kim 357a9f12690SJung-uk Kim /* 358a9f12690SJung-uk Kim * dbutils - AML debugger utilities 359a9f12690SJung-uk Kim */ 360a9f12690SJung-uk Kim void 361a9f12690SJung-uk Kim AcpiDbSetOutputDestination ( 362a9f12690SJung-uk Kim UINT32 Where); 363a9f12690SJung-uk Kim 364a9f12690SJung-uk Kim void 365a9f12690SJung-uk Kim AcpiDbDumpExternalObject ( 366a9f12690SJung-uk Kim ACPI_OBJECT *ObjDesc, 367a9f12690SJung-uk Kim UINT32 Level); 368a9f12690SJung-uk Kim 369a9f12690SJung-uk Kim void 370a9f12690SJung-uk Kim AcpiDbPrepNamestring ( 371a9f12690SJung-uk Kim char *Name); 372a9f12690SJung-uk Kim 373a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE * 374a9f12690SJung-uk Kim AcpiDbLocalNsLookup ( 375a9f12690SJung-uk Kim char *Name); 376a9f12690SJung-uk Kim 377a9f12690SJung-uk Kim void 378a9f12690SJung-uk Kim AcpiDbUInt32ToHexString ( 379a9f12690SJung-uk Kim UINT32 Value, 380a9f12690SJung-uk Kim char *Buffer); 381a9f12690SJung-uk Kim 382a9f12690SJung-uk Kim #endif /* __ACDEBUG_H__ */ 383