1 /****************************************************************************** 2 * 3 * Name: acdebug.h - ACPI/AML debugger 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2011, 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_STATUS 102 AcpiDbDisassembleMethod ( 103 char *Name); 104 105 void 106 AcpiDbDisplayTableInfo ( 107 char *TableArg); 108 109 void 110 AcpiDbUnloadAcpiTable ( 111 char *TableArg, 112 char *InstanceArg); 113 114 void 115 AcpiDbSetMethodBreakpoint ( 116 char *Location, 117 ACPI_WALK_STATE *WalkState, 118 ACPI_PARSE_OBJECT *Op); 119 120 void 121 AcpiDbSetMethodCallBreakpoint ( 122 ACPI_PARSE_OBJECT *Op); 123 124 void 125 AcpiDbGetBusInfo ( 126 void); 127 128 void 129 AcpiDbDisassembleAml ( 130 char *Statements, 131 ACPI_PARSE_OBJECT *Op); 132 133 void 134 AcpiDbDumpNamespace ( 135 char *StartArg, 136 char *DepthArg); 137 138 void 139 AcpiDbDumpNamespaceByOwner ( 140 char *OwnerArg, 141 char *DepthArg); 142 143 void 144 AcpiDbSendNotify ( 145 char *Name, 146 UINT32 Value); 147 148 void 149 AcpiDbSetMethodData ( 150 char *TypeArg, 151 char *IndexArg, 152 char *ValueArg); 153 154 ACPI_STATUS 155 AcpiDbDisplayObjects ( 156 char *ObjTypeArg, 157 char *DisplayCountArg); 158 159 void 160 AcpiDbDisplayInterfaces ( 161 char *ActionArg, 162 char *InterfaceNameArg); 163 164 ACPI_STATUS 165 AcpiDbFindNameInNamespace ( 166 char *NameArg); 167 168 void 169 AcpiDbSetScope ( 170 char *Name); 171 172 ACPI_STATUS 173 AcpiDbSleep ( 174 char *ObjectArg); 175 176 void 177 AcpiDbFindReferences ( 178 char *ObjectArg); 179 180 void 181 AcpiDbDisplayLocks ( 182 void); 183 184 void 185 AcpiDbDisplayResources ( 186 char *ObjectArg); 187 188 void 189 AcpiDbDisplayGpes ( 190 void); 191 192 void 193 AcpiDbCheckIntegrity ( 194 void); 195 196 void 197 AcpiDbGenerateGpe ( 198 char *GpeArg, 199 char *BlockArg); 200 201 void 202 AcpiDbCheckPredefinedNames ( 203 void); 204 205 void 206 AcpiDbBatchExecute ( 207 char *CountArg); 208 209 /* 210 * dbdisply - debug display commands 211 */ 212 void 213 AcpiDbDisplayMethodInfo ( 214 ACPI_PARSE_OBJECT *Op); 215 216 void 217 AcpiDbDecodeAndDisplayObject ( 218 char *Target, 219 char *OutputType); 220 221 void 222 AcpiDbDisplayResultObject ( 223 ACPI_OPERAND_OBJECT *ObjDesc, 224 ACPI_WALK_STATE *WalkState); 225 226 ACPI_STATUS 227 AcpiDbDisplayAllMethods ( 228 char *DisplayCountArg); 229 230 void 231 AcpiDbDisplayArguments ( 232 void); 233 234 void 235 AcpiDbDisplayLocals ( 236 void); 237 238 void 239 AcpiDbDisplayResults ( 240 void); 241 242 void 243 AcpiDbDisplayCallingTree ( 244 void); 245 246 void 247 AcpiDbDisplayObjectType ( 248 char *ObjectArg); 249 250 void 251 AcpiDbDisplayArgumentObject ( 252 ACPI_OPERAND_OBJECT *ObjDesc, 253 ACPI_WALK_STATE *WalkState); 254 255 256 /* 257 * dbexec - debugger control method execution 258 */ 259 void 260 AcpiDbExecute ( 261 char *Name, 262 char **Args, 263 UINT32 Flags); 264 265 void 266 AcpiDbCreateExecutionThreads ( 267 char *NumThreadsArg, 268 char *NumLoopsArg, 269 char *MethodNameArg); 270 271 #ifdef ACPI_DBG_TRACK_ALLOCATIONS 272 UINT32 273 AcpiDbGetCacheInfo ( 274 ACPI_MEMORY_LIST *Cache); 275 #endif 276 277 278 /* 279 * dbfileio - Debugger file I/O commands 280 */ 281 ACPI_OBJECT_TYPE 282 AcpiDbMatchArgument ( 283 char *UserArgument, 284 ARGUMENT_INFO *Arguments); 285 286 void 287 AcpiDbCloseDebugFile ( 288 void); 289 290 void 291 AcpiDbOpenDebugFile ( 292 char *Name); 293 294 ACPI_STATUS 295 AcpiDbLoadAcpiTable ( 296 char *Filename); 297 298 ACPI_STATUS 299 AcpiDbGetTableFromFile ( 300 char *Filename, 301 ACPI_TABLE_HEADER **Table); 302 303 ACPI_STATUS 304 AcpiDbReadTableFromFile ( 305 char *Filename, 306 ACPI_TABLE_HEADER **Table); 307 308 309 /* 310 * dbhistry - debugger HISTORY command 311 */ 312 void 313 AcpiDbAddToHistory ( 314 char *CommandLine); 315 316 void 317 AcpiDbDisplayHistory ( 318 void); 319 320 char * 321 AcpiDbGetFromHistory ( 322 char *CommandNumArg); 323 324 325 /* 326 * dbinput - user front-end to the AML debugger 327 */ 328 ACPI_STATUS 329 AcpiDbCommandDispatch ( 330 char *InputBuffer, 331 ACPI_WALK_STATE *WalkState, 332 ACPI_PARSE_OBJECT *Op); 333 334 void ACPI_SYSTEM_XFACE 335 AcpiDbExecuteThread ( 336 void *Context); 337 338 ACPI_STATUS 339 AcpiDbUserCommands ( 340 char Prompt, 341 ACPI_PARSE_OBJECT *Op); 342 343 344 /* 345 * dbstats - Generation and display of ACPI table statistics 346 */ 347 void 348 AcpiDbGenerateStatistics ( 349 ACPI_PARSE_OBJECT *Root, 350 BOOLEAN IsMethod); 351 352 ACPI_STATUS 353 AcpiDbDisplayStatistics ( 354 char *TypeArg); 355 356 357 /* 358 * dbutils - AML debugger utilities 359 */ 360 void 361 AcpiDbSetOutputDestination ( 362 UINT32 Where); 363 364 void 365 AcpiDbDumpExternalObject ( 366 ACPI_OBJECT *ObjDesc, 367 UINT32 Level); 368 369 void 370 AcpiDbPrepNamestring ( 371 char *Name); 372 373 ACPI_NAMESPACE_NODE * 374 AcpiDbLocalNsLookup ( 375 char *Name); 376 377 void 378 AcpiDbUInt32ToHexString ( 379 UINT32 Value, 380 char *Buffer); 381 382 #endif /* __ACDEBUG_H__ */ 383