1 /****************************************************************************** 2 * 3 * Name: acdebug.h - ACPI/AML debugger 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2012, 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 48 #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */ 49 50 typedef struct CommandInfo 51 { 52 char *Name; /* Command Name */ 53 UINT8 MinArgs; /* Minimum arguments required */ 54 55 } COMMAND_INFO; 56 57 typedef struct ArgumentInfo 58 { 59 char *Name; /* Argument Name */ 60 61 } ARGUMENT_INFO; 62 63 typedef struct acpi_execute_walk 64 { 65 UINT32 Count; 66 UINT32 MaxCount; 67 68 } ACPI_EXECUTE_WALK; 69 70 71 #define PARAM_LIST(pl) pl 72 #define DBTEST_OUTPUT_LEVEL(lvl) if (AcpiGbl_DbOpt_verbose) 73 #define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ 74 AcpiOsPrintf PARAM_LIST(fp);} 75 76 #define EX_NO_SINGLE_STEP 1 77 #define EX_SINGLE_STEP 2 78 79 80 /* 81 * dbxface - external debugger interfaces 82 */ 83 ACPI_STATUS 84 AcpiDbInitialize ( 85 void); 86 87 void 88 AcpiDbTerminate ( 89 void); 90 91 ACPI_STATUS 92 AcpiDbSingleStep ( 93 ACPI_WALK_STATE *WalkState, 94 ACPI_PARSE_OBJECT *Op, 95 UINT32 OpType); 96 97 98 /* 99 * dbcmds - debug commands and output routines 100 */ 101 ACPI_NAMESPACE_NODE * 102 AcpiDbConvertToNode ( 103 char *InString); 104 105 void 106 AcpiDbDisplayTableInfo ( 107 char *TableArg); 108 109 void 110 AcpiDbDisplayTemplate ( 111 char *BufferArg); 112 113 void 114 AcpiDbUnloadAcpiTable ( 115 char *Name); 116 117 void 118 AcpiDbSendNotify ( 119 char *Name, 120 UINT32 Value); 121 122 void 123 AcpiDbDisplayInterfaces ( 124 char *ActionArg, 125 char *InterfaceNameArg); 126 127 ACPI_STATUS 128 AcpiDbSleep ( 129 char *ObjectArg); 130 131 void 132 AcpiDbDisplayLocks ( 133 void); 134 135 void 136 AcpiDbDisplayResources ( 137 char *ObjectArg); 138 139 ACPI_HW_DEPENDENT_RETURN_VOID ( 140 void 141 AcpiDbDisplayGpes ( 142 void)) 143 144 void 145 AcpiDbDisplayHandlers ( 146 void); 147 148 ACPI_HW_DEPENDENT_RETURN_VOID ( 149 void 150 AcpiDbGenerateGpe ( 151 char *GpeArg, 152 char *BlockArg)) 153 154 155 /* 156 * dbmethod - control method commands 157 */ 158 void 159 AcpiDbSetMethodBreakpoint ( 160 char *Location, 161 ACPI_WALK_STATE *WalkState, 162 ACPI_PARSE_OBJECT *Op); 163 164 void 165 AcpiDbSetMethodCallBreakpoint ( 166 ACPI_PARSE_OBJECT *Op); 167 168 void 169 AcpiDbSetMethodData ( 170 char *TypeArg, 171 char *IndexArg, 172 char *ValueArg); 173 174 ACPI_STATUS 175 AcpiDbDisassembleMethod ( 176 char *Name); 177 178 void 179 AcpiDbDisassembleAml ( 180 char *Statements, 181 ACPI_PARSE_OBJECT *Op); 182 183 void 184 AcpiDbBatchExecute ( 185 char *CountArg); 186 187 188 /* 189 * dbnames - namespace commands 190 */ 191 void 192 AcpiDbSetScope ( 193 char *Name); 194 195 void 196 AcpiDbDumpNamespace ( 197 char *StartArg, 198 char *DepthArg); 199 200 void 201 AcpiDbDumpNamespaceByOwner ( 202 char *OwnerArg, 203 char *DepthArg); 204 205 ACPI_STATUS 206 AcpiDbFindNameInNamespace ( 207 char *NameArg); 208 209 void 210 AcpiDbCheckPredefinedNames ( 211 void); 212 213 ACPI_STATUS 214 AcpiDbDisplayObjects ( 215 char *ObjTypeArg, 216 char *DisplayCountArg); 217 218 void 219 AcpiDbCheckIntegrity ( 220 void); 221 222 void 223 AcpiDbFindReferences ( 224 char *ObjectArg); 225 226 void 227 AcpiDbGetBusInfo ( 228 void); 229 230 231 /* 232 * dbdisply - debug display commands 233 */ 234 void 235 AcpiDbDisplayMethodInfo ( 236 ACPI_PARSE_OBJECT *Op); 237 238 void 239 AcpiDbDecodeAndDisplayObject ( 240 char *Target, 241 char *OutputType); 242 243 void 244 AcpiDbDisplayResultObject ( 245 ACPI_OPERAND_OBJECT *ObjDesc, 246 ACPI_WALK_STATE *WalkState); 247 248 ACPI_STATUS 249 AcpiDbDisplayAllMethods ( 250 char *DisplayCountArg); 251 252 void 253 AcpiDbDisplayArguments ( 254 void); 255 256 void 257 AcpiDbDisplayLocals ( 258 void); 259 260 void 261 AcpiDbDisplayResults ( 262 void); 263 264 void 265 AcpiDbDisplayCallingTree ( 266 void); 267 268 void 269 AcpiDbDisplayObjectType ( 270 char *ObjectArg); 271 272 void 273 AcpiDbDisplayArgumentObject ( 274 ACPI_OPERAND_OBJECT *ObjDesc, 275 ACPI_WALK_STATE *WalkState); 276 277 278 /* 279 * dbexec - debugger control method execution 280 */ 281 void 282 AcpiDbExecute ( 283 char *Name, 284 char **Args, 285 ACPI_OBJECT_TYPE *Types, 286 UINT32 Flags); 287 288 void 289 AcpiDbCreateExecutionThreads ( 290 char *NumThreadsArg, 291 char *NumLoopsArg, 292 char *MethodNameArg); 293 294 #ifdef ACPI_DBG_TRACK_ALLOCATIONS 295 UINT32 296 AcpiDbGetCacheInfo ( 297 ACPI_MEMORY_LIST *Cache); 298 #endif 299 300 301 /* 302 * dbfileio - Debugger file I/O commands 303 */ 304 ACPI_OBJECT_TYPE 305 AcpiDbMatchArgument ( 306 char *UserArgument, 307 ARGUMENT_INFO *Arguments); 308 309 void 310 AcpiDbCloseDebugFile ( 311 void); 312 313 void 314 AcpiDbOpenDebugFile ( 315 char *Name); 316 317 ACPI_STATUS 318 AcpiDbLoadAcpiTable ( 319 char *Filename); 320 321 ACPI_STATUS 322 AcpiDbGetTableFromFile ( 323 char *Filename, 324 ACPI_TABLE_HEADER **Table); 325 326 ACPI_STATUS 327 AcpiDbReadTableFromFile ( 328 char *Filename, 329 ACPI_TABLE_HEADER **Table); 330 331 332 /* 333 * dbhistry - debugger HISTORY command 334 */ 335 void 336 AcpiDbAddToHistory ( 337 char *CommandLine); 338 339 void 340 AcpiDbDisplayHistory ( 341 void); 342 343 char * 344 AcpiDbGetFromHistory ( 345 char *CommandNumArg); 346 347 348 /* 349 * dbinput - user front-end to the AML debugger 350 */ 351 ACPI_STATUS 352 AcpiDbCommandDispatch ( 353 char *InputBuffer, 354 ACPI_WALK_STATE *WalkState, 355 ACPI_PARSE_OBJECT *Op); 356 357 void ACPI_SYSTEM_XFACE 358 AcpiDbExecuteThread ( 359 void *Context); 360 361 ACPI_STATUS 362 AcpiDbUserCommands ( 363 char Prompt, 364 ACPI_PARSE_OBJECT *Op); 365 366 char * 367 AcpiDbGetNextToken ( 368 char *String, 369 char **Next, 370 ACPI_OBJECT_TYPE *ReturnType); 371 372 373 /* 374 * dbstats - Generation and display of ACPI table statistics 375 */ 376 void 377 AcpiDbGenerateStatistics ( 378 ACPI_PARSE_OBJECT *Root, 379 BOOLEAN IsMethod); 380 381 ACPI_STATUS 382 AcpiDbDisplayStatistics ( 383 char *TypeArg); 384 385 386 /* 387 * dbutils - AML debugger utilities 388 */ 389 void 390 AcpiDbSetOutputDestination ( 391 UINT32 Where); 392 393 void 394 AcpiDbDumpExternalObject ( 395 ACPI_OBJECT *ObjDesc, 396 UINT32 Level); 397 398 void 399 AcpiDbPrepNamestring ( 400 char *Name); 401 402 ACPI_NAMESPACE_NODE * 403 AcpiDbLocalNsLookup ( 404 char *Name); 405 406 void 407 AcpiDbUint32ToHexString ( 408 UINT32 Value, 409 char *Buffer); 410 411 #endif /* __ACDEBUG_H__ */ 412