acdebug.h revision 306536
1/****************************************************************************** 2 * 3 * Name: acdebug.h - ACPI/AML debugger 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2016, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44#ifndef __ACDEBUG_H__ 45#define __ACDEBUG_H__ 46 47/* The debugger is used in conjunction with the disassembler most of time */ 48 49#ifdef ACPI_DISASSEMBLER 50#include <contrib/dev/acpica/include/acdisasm.h> 51#endif 52 53 54#define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */ 55 56typedef struct acpi_db_command_info 57{ 58 const char *Name; /* Command Name */ 59 UINT8 MinArgs; /* Minimum arguments required */ 60 61} ACPI_DB_COMMAND_INFO; 62 63typedef struct acpi_db_command_help 64{ 65 UINT8 LineCount; /* Number of help lines */ 66 char *Invocation; /* Command Invocation */ 67 char *Description; /* Command Description */ 68 69} ACPI_DB_COMMAND_HELP; 70 71typedef struct acpi_db_argument_info 72{ 73 const char *Name; /* Argument Name */ 74 75} ACPI_DB_ARGUMENT_INFO; 76 77typedef struct acpi_db_execute_walk 78{ 79 UINT32 Count; 80 UINT32 MaxCount; 81 82} ACPI_DB_EXECUTE_WALK; 83 84 85#define PARAM_LIST(pl) pl 86 87#define EX_NO_SINGLE_STEP 1 88#define EX_SINGLE_STEP 2 89 90 91/* 92 * dbxface - external debugger interfaces 93 */ 94ACPI_DBR_DEPENDENT_RETURN_OK ( 95ACPI_STATUS 96AcpiDbSingleStep ( 97 ACPI_WALK_STATE *WalkState, 98 ACPI_PARSE_OBJECT *Op, 99 UINT32 OpType)) 100 101ACPI_DBR_DEPENDENT_RETURN_VOID ( 102void 103AcpiDbSignalBreakPoint ( 104 ACPI_WALK_STATE *WalkState)) 105 106 107/* 108 * dbcmds - debug commands and output routines 109 */ 110ACPI_NAMESPACE_NODE * 111AcpiDbConvertToNode ( 112 char *InString); 113 114void 115AcpiDbDisplayTableInfo ( 116 char *TableArg); 117 118void 119AcpiDbDisplayTemplate ( 120 char *BufferArg); 121 122void 123AcpiDbUnloadAcpiTable ( 124 char *Name); 125 126void 127AcpiDbSendNotify ( 128 char *Name, 129 UINT32 Value); 130 131void 132AcpiDbDisplayInterfaces ( 133 char *ActionArg, 134 char *InterfaceNameArg); 135 136ACPI_STATUS 137AcpiDbSleep ( 138 char *ObjectArg); 139 140void 141AcpiDbTrace ( 142 char *EnableArg, 143 char *MethodArg, 144 char *OnceArg); 145 146void 147AcpiDbDisplayLocks ( 148 void); 149 150void 151AcpiDbDisplayResources ( 152 char *ObjectArg); 153 154ACPI_HW_DEPENDENT_RETURN_VOID ( 155void 156AcpiDbDisplayGpes ( 157 void)) 158 159void 160AcpiDbDisplayHandlers ( 161 void); 162 163ACPI_HW_DEPENDENT_RETURN_VOID ( 164void 165AcpiDbGenerateGpe ( 166 char *GpeArg, 167 char *BlockArg)) 168 169ACPI_HW_DEPENDENT_RETURN_VOID ( 170void 171AcpiDbGenerateSci ( 172 void)) 173 174void 175AcpiDbExecuteTest ( 176 char *TypeArg); 177 178 179/* 180 * dbconvert - miscellaneous conversion routines 181 */ 182ACPI_STATUS 183AcpiDbHexCharToValue ( 184 int HexChar, 185 UINT8 *ReturnValue); 186 187ACPI_STATUS 188AcpiDbConvertToPackage ( 189 char *String, 190 ACPI_OBJECT *Object); 191 192ACPI_STATUS 193AcpiDbConvertToObject ( 194 ACPI_OBJECT_TYPE Type, 195 char *String, 196 ACPI_OBJECT *Object); 197 198UINT8 * 199AcpiDbEncodePldBuffer ( 200 ACPI_PLD_INFO *PldInfo); 201 202void 203AcpiDbDumpPldBuffer ( 204 ACPI_OBJECT *ObjDesc); 205 206 207/* 208 * dbmethod - control method commands 209 */ 210void 211AcpiDbSetMethodBreakpoint ( 212 char *Location, 213 ACPI_WALK_STATE *WalkState, 214 ACPI_PARSE_OBJECT *Op); 215 216void 217AcpiDbSetMethodCallBreakpoint ( 218 ACPI_PARSE_OBJECT *Op); 219 220void 221AcpiDbSetMethodData ( 222 char *TypeArg, 223 char *IndexArg, 224 char *ValueArg); 225 226ACPI_STATUS 227AcpiDbDisassembleMethod ( 228 char *Name); 229 230void 231AcpiDbDisassembleAml ( 232 char *Statements, 233 ACPI_PARSE_OBJECT *Op); 234 235void 236AcpiDbBatchExecute ( 237 char *CountArg); 238 239 240/* 241 * dbnames - namespace commands 242 */ 243void 244AcpiDbSetScope ( 245 char *Name); 246 247void 248AcpiDbDumpNamespace ( 249 char *StartArg, 250 char *DepthArg); 251 252void 253AcpiDbDumpNamespacePaths ( 254 void); 255 256void 257AcpiDbDumpNamespaceByOwner ( 258 char *OwnerArg, 259 char *DepthArg); 260 261ACPI_STATUS 262AcpiDbFindNameInNamespace ( 263 char *NameArg); 264 265void 266AcpiDbCheckPredefinedNames ( 267 void); 268 269ACPI_STATUS 270AcpiDbDisplayObjects ( 271 char *ObjTypeArg, 272 char *DisplayCountArg); 273 274void 275AcpiDbCheckIntegrity ( 276 void); 277 278void 279AcpiDbFindReferences ( 280 char *ObjectArg); 281 282void 283AcpiDbGetBusInfo ( 284 void); 285 286 287/* 288 * dbdisply - debug display commands 289 */ 290void 291AcpiDbDisplayMethodInfo ( 292 ACPI_PARSE_OBJECT *Op); 293 294void 295AcpiDbDecodeAndDisplayObject ( 296 char *Target, 297 char *OutputType); 298 299ACPI_DBR_DEPENDENT_RETURN_VOID ( 300void 301AcpiDbDisplayResultObject ( 302 ACPI_OPERAND_OBJECT *ObjDesc, 303 ACPI_WALK_STATE *WalkState)) 304 305ACPI_STATUS 306AcpiDbDisplayAllMethods ( 307 char *DisplayCountArg); 308 309void 310AcpiDbDisplayArguments ( 311 void); 312 313void 314AcpiDbDisplayLocals ( 315 void); 316 317void 318AcpiDbDisplayResults ( 319 void); 320 321void 322AcpiDbDisplayCallingTree ( 323 void); 324 325void 326AcpiDbDisplayObjectType ( 327 char *ObjectArg); 328 329ACPI_DBR_DEPENDENT_RETURN_VOID ( 330void 331AcpiDbDisplayArgumentObject ( 332 ACPI_OPERAND_OBJECT *ObjDesc, 333 ACPI_WALK_STATE *WalkState)) 334 335 336/* 337 * dbexec - debugger control method execution 338 */ 339void 340AcpiDbExecute ( 341 char *Name, 342 char **Args, 343 ACPI_OBJECT_TYPE *Types, 344 UINT32 Flags); 345 346void 347AcpiDbCreateExecutionThreads ( 348 char *NumThreadsArg, 349 char *NumLoopsArg, 350 char *MethodNameArg); 351 352void 353AcpiDbDeleteObjects ( 354 UINT32 Count, 355 ACPI_OBJECT *Objects); 356 357#ifdef ACPI_DBG_TRACK_ALLOCATIONS 358UINT32 359AcpiDbGetCacheInfo ( 360 ACPI_MEMORY_LIST *Cache); 361#endif 362 363 364/* 365 * dbfileio - Debugger file I/O commands 366 */ 367ACPI_OBJECT_TYPE 368AcpiDbMatchArgument ( 369 char *UserArgument, 370 ACPI_DB_ARGUMENT_INFO *Arguments); 371 372void 373AcpiDbCloseDebugFile ( 374 void); 375 376void 377AcpiDbOpenDebugFile ( 378 char *Name); 379 380ACPI_STATUS 381AcpiDbLoadAcpiTable ( 382 char *Filename); 383 384ACPI_STATUS 385AcpiDbLoadTables ( 386 ACPI_NEW_TABLE_DESC *ListHead); 387 388 389/* 390 * dbhistry - debugger HISTORY command 391 */ 392void 393AcpiDbAddToHistory ( 394 char *CommandLine); 395 396void 397AcpiDbDisplayHistory ( 398 void); 399 400char * 401AcpiDbGetFromHistory ( 402 char *CommandNumArg); 403 404char * 405AcpiDbGetHistoryByIndex ( 406 UINT32 CommanddNum); 407 408 409/* 410 * dbinput - user front-end to the AML debugger 411 */ 412ACPI_STATUS 413AcpiDbCommandDispatch ( 414 char *InputBuffer, 415 ACPI_WALK_STATE *WalkState, 416 ACPI_PARSE_OBJECT *Op); 417 418void ACPI_SYSTEM_XFACE 419AcpiDbExecuteThread ( 420 void *Context); 421 422ACPI_STATUS 423AcpiDbUserCommands ( 424 char Prompt, 425 ACPI_PARSE_OBJECT *Op); 426 427char * 428AcpiDbGetNextToken ( 429 char *String, 430 char **Next, 431 ACPI_OBJECT_TYPE *ReturnType); 432 433 434/* 435 * dbobject 436 */ 437void 438AcpiDbDecodeInternalObject ( 439 ACPI_OPERAND_OBJECT *ObjDesc); 440 441void 442AcpiDbDisplayInternalObject ( 443 ACPI_OPERAND_OBJECT *ObjDesc, 444 ACPI_WALK_STATE *WalkState); 445 446void 447AcpiDbDecodeArguments ( 448 ACPI_WALK_STATE *WalkState); 449 450void 451AcpiDbDecodeLocals ( 452 ACPI_WALK_STATE *WalkState); 453 454void 455AcpiDbDumpMethodInfo ( 456 ACPI_STATUS Status, 457 ACPI_WALK_STATE *WalkState); 458 459 460/* 461 * dbstats - Generation and display of ACPI table statistics 462 */ 463void 464AcpiDbGenerateStatistics ( 465 ACPI_PARSE_OBJECT *Root, 466 BOOLEAN IsMethod); 467 468ACPI_STATUS 469AcpiDbDisplayStatistics ( 470 char *TypeArg); 471 472 473/* 474 * dbutils - AML debugger utilities 475 */ 476void 477AcpiDbSetOutputDestination ( 478 UINT32 Where); 479 480void 481AcpiDbDumpExternalObject ( 482 ACPI_OBJECT *ObjDesc, 483 UINT32 Level); 484 485void 486AcpiDbPrepNamestring ( 487 char *Name); 488 489ACPI_NAMESPACE_NODE * 490AcpiDbLocalNsLookup ( 491 char *Name); 492 493void 494AcpiDbUint32ToHexString ( 495 UINT32 Value, 496 char *Buffer); 497 498#endif /* __ACDEBUG_H__ */ 499