Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /******************************************************************************
  2.  *
  3.  * Name: acdebug.h - ACPI/AML debugger
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /******************************************************************************
  8.  *
  9.  * 1. Copyright Notice
  10.  *
  11.  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
  12.  * All rights reserved.
  13.  *
  14.  * 2. License
  15.  *
  16.  * 2.1. This is your license from Intel Corp. under its intellectual property
  17.  * rights.  You may have additional license terms from the party that provided
  18.  * you this software, covering your right to use that party's intellectual
  19.  * property rights.
  20.  *
  21.  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
  22.  * copy of the source code appearing in this file ("Covered Code") an
  23.  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
  24.  * base code distributed originally by Intel ("Original Intel Code") to copy,
  25.  * make derivatives, distribute, use and display any portion of the Covered
  26.  * Code in any form, with the right to sublicense such rights; and
  27.  *
  28.  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
  29.  * license (with the right to sublicense), under only those claims of Intel
  30.  * patents that are infringed by the Original Intel Code, to make, use, sell,
  31.  * offer to sell, and import the Covered Code and derivative works thereof
  32.  * solely to the minimum extent necessary to exercise the above copyright
  33.  * license, and in no event shall the patent license extend to any additions
  34.  * to or modifications of the Original Intel Code.  No other license or right
  35.  * is granted directly or by implication, estoppel or otherwise;
  36.  *
  37.  * The above copyright and patent license is granted only if the following
  38.  * conditions are met:
  39.  *
  40.  * 3. Conditions
  41.  *
  42.  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
  43.  * Redistribution of source code of any substantial portion of the Covered
  44.  * Code or modification with rights to further distribute source must include
  45.  * the above Copyright Notice, the above License, this list of Conditions,
  46.  * and the following Disclaimer and Export Compliance provision.  In addition,
  47.  * Licensee must cause all Covered Code to which Licensee contributes to
  48.  * contain a file documenting the changes Licensee made to create that Covered
  49.  * Code and the date of any change.  Licensee must include in that file the
  50.  * documentation of any changes made by any predecessor Licensee.  Licensee
  51.  * must include a prominent statement that the modification is derived,
  52.  * directly or indirectly, from Original Intel Code.
  53.  *
  54.  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
  55.  * Redistribution of source code of any substantial portion of the Covered
  56.  * Code or modification without rights to further distribute source must
  57.  * include the following Disclaimer and Export Compliance provision in the
  58.  * documentation and/or other materials provided with distribution.  In
  59.  * addition, Licensee may not authorize further sublicense of source of any
  60.  * portion of the Covered Code, and must include terms to the effect that the
  61.  * license from Licensee to its licensee is limited to the intellectual
  62.  * property embodied in the software Licensee provides to its licensee, and
  63.  * not to intellectual property embodied in modifications its licensee may
  64.  * make.
  65.  *
  66.  * 3.3. Redistribution of Executable. Redistribution in executable form of any
  67.  * substantial portion of the Covered Code or modification must reproduce the
  68.  * above Copyright Notice, and the following Disclaimer and Export Compliance
  69.  * provision in the documentation and/or other materials provided with the
  70.  * distribution.
  71.  *
  72.  * 3.4. Intel retains all right, title, and interest in and to the Original
  73.  * Intel Code.
  74.  *
  75.  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
  76.  * Intel shall be used in advertising or otherwise to promote the sale, use or
  77.  * other dealings in products derived from or relating to the Covered Code
  78.  * without prior written authorization from Intel.
  79.  *
  80.  * 4. Disclaimer and Export Compliance
  81.  *
  82.  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
  83.  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
  84.  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
  85.  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
  86.  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
  87.  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
  88.  * PARTICULAR PURPOSE.
  89.  *
  90.  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
  91.  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
  92.  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
  93.  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
  94.  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
  95.  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
  96.  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
  97.  * LIMITED REMEDY.
  98.  *
  99.  * 4.3. Licensee shall not export, either directly or indirectly, any of this
  100.  * software or system incorporating such software without first obtaining any
  101.  * required license or other approval from the U. S. Department of Commerce or
  102.  * any other agency or department of the United States Government.  In the
  103.  * event Licensee exports any such software from the United States or
  104.  * re-exports any such software from a foreign destination, Licensee shall
  105.  * ensure that the distribution and export/re-export of the software is in
  106.  * compliance with all laws, regulations, orders, or other restrictions of the
  107.  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
  108.  * any of its subsidiaries will export/re-export any technical data, process,
  109.  * software, or service, directly or indirectly, to any country for which the
  110.  * United States government or any agency thereof requires an export license,
  111.  * other governmental approval, or letter of assurance, without first obtaining
  112.  * such license, approval or letter.
  113.  *
  114.  *****************************************************************************/
  115.  
  116. #ifndef __ACDEBUG_H__
  117. #define __ACDEBUG_H__
  118.  
  119.  
  120. #define ACPI_DEBUG_BUFFER_SIZE  4196
  121.  
  122. typedef struct CommandInfo
  123. {
  124.     char                    *Name;          /* Command Name */
  125.     UINT8                   MinArgs;        /* Minimum arguments required */
  126.  
  127. } COMMAND_INFO;
  128.  
  129. typedef struct ArgumentInfo
  130. {
  131.     char                    *Name;          /* Argument Name */
  132.  
  133. } ARGUMENT_INFO;
  134.  
  135. typedef struct acpi_execute_walk
  136. {
  137.     UINT32                  Count;
  138.     UINT32                  MaxCount;
  139.  
  140. } ACPI_EXECUTE_WALK;
  141.  
  142.  
  143. #define PARAM_LIST(pl)                  pl
  144. #define DBTEST_OUTPUT_LEVEL(lvl)        if (AcpiGbl_DbOpt_verbose)
  145. #define VERBOSE_PRINT(fp)               DBTEST_OUTPUT_LEVEL(lvl) {\
  146.                                             AcpiOsPrintf PARAM_LIST(fp);}
  147.  
  148. #define EX_NO_SINGLE_STEP               1
  149. #define EX_SINGLE_STEP                  2
  150.  
  151.  
  152. /*
  153.  * dbxface - external debugger interfaces
  154.  */
  155. ACPI_STATUS
  156. AcpiDbInitialize (
  157.     void);
  158.  
  159. void
  160. AcpiDbTerminate (
  161.     void);
  162.  
  163. ACPI_STATUS
  164. AcpiDbSingleStep (
  165.     ACPI_WALK_STATE         *WalkState,
  166.     ACPI_PARSE_OBJECT       *Op,
  167.     UINT32                  OpType);
  168.  
  169.  
  170. /*
  171.  * dbcmds - debug commands and output routines
  172.  */
  173. ACPI_STATUS
  174. AcpiDbDisassembleMethod (
  175.     char                    *Name);
  176.  
  177. void
  178. AcpiDbDisplayTableInfo (
  179.     char                    *TableArg);
  180.  
  181. void
  182. AcpiDbUnloadAcpiTable (
  183.     char                    *TableArg,
  184.     char                    *InstanceArg);
  185.  
  186. void
  187. AcpiDbSetMethodBreakpoint (
  188.     char                    *Location,
  189.     ACPI_WALK_STATE         *WalkState,
  190.     ACPI_PARSE_OBJECT       *Op);
  191.  
  192. void
  193. AcpiDbSetMethodCallBreakpoint (
  194.     ACPI_PARSE_OBJECT       *Op);
  195.  
  196. void
  197. AcpiDbGetBusInfo (
  198.     void);
  199.  
  200. void
  201. AcpiDbDisassembleAml (
  202.     char                    *Statements,
  203.     ACPI_PARSE_OBJECT       *Op);
  204.  
  205. void
  206. AcpiDbDumpNamespace (
  207.     char                    *StartArg,
  208.     char                    *DepthArg);
  209.  
  210. void
  211. AcpiDbDumpNamespaceByOwner (
  212.     char                    *OwnerArg,
  213.     char                    *DepthArg);
  214.  
  215. void
  216. AcpiDbSendNotify (
  217.     char                    *Name,
  218.     UINT32                  Value);
  219.  
  220. void
  221. AcpiDbSetMethodData (
  222.     char                    *TypeArg,
  223.     char                    *IndexArg,
  224.     char                    *ValueArg);
  225.  
  226. ACPI_STATUS
  227. AcpiDbDisplayObjects (
  228.     char                    *ObjTypeArg,
  229.     char                    *DisplayCountArg);
  230.  
  231. ACPI_STATUS
  232. AcpiDbFindNameInNamespace (
  233.     char                    *NameArg);
  234.  
  235. void
  236. AcpiDbSetScope (
  237.     char                    *Name);
  238.  
  239. ACPI_STATUS
  240. AcpiDbSleep (
  241.     char                    *ObjectArg);
  242.  
  243. void
  244. AcpiDbFindReferences (
  245.     char                    *ObjectArg);
  246.  
  247. void
  248. AcpiDbDisplayLocks (
  249.     void);
  250.  
  251. void
  252. AcpiDbDisplayResources (
  253.     char                    *ObjectArg);
  254.  
  255. void
  256. AcpiDbDisplayGpes (
  257.     void);
  258.  
  259. void
  260. AcpiDbCheckIntegrity (
  261.     void);
  262.  
  263. void
  264. AcpiDbGenerateGpe (
  265.     char                    *GpeArg,
  266.     char                    *BlockArg);
  267.  
  268. void
  269. AcpiDbCheckPredefinedNames (
  270.     void);
  271.  
  272. void
  273. AcpiDbBatchExecute (
  274.     char                    *CountArg);
  275.  
  276. /*
  277.  * dbdisply - debug display commands
  278.  */
  279. void
  280. AcpiDbDisplayMethodInfo (
  281.     ACPI_PARSE_OBJECT       *Op);
  282.  
  283. void
  284. AcpiDbDecodeAndDisplayObject (
  285.     char                    *Target,
  286.     char                    *OutputType);
  287.  
  288. void
  289. AcpiDbDisplayResultObject (
  290.     ACPI_OPERAND_OBJECT     *ObjDesc,
  291.     ACPI_WALK_STATE         *WalkState);
  292.  
  293. ACPI_STATUS
  294. AcpiDbDisplayAllMethods (
  295.     char                    *DisplayCountArg);
  296.  
  297. void
  298. AcpiDbDisplayArguments (
  299.     void);
  300.  
  301. void
  302. AcpiDbDisplayLocals (
  303.     void);
  304.  
  305. void
  306. AcpiDbDisplayResults (
  307.     void);
  308.  
  309. void
  310. AcpiDbDisplayCallingTree (
  311.     void);
  312.  
  313. void
  314. AcpiDbDisplayObjectType (
  315.     char                    *ObjectArg);
  316.  
  317. void
  318. AcpiDbDisplayArgumentObject (
  319.     ACPI_OPERAND_OBJECT     *ObjDesc,
  320.     ACPI_WALK_STATE         *WalkState);
  321.  
  322.  
  323. /*
  324.  * dbexec - debugger control method execution
  325.  */
  326. void
  327. AcpiDbExecute (
  328.     char                    *Name,
  329.     char                    **Args,
  330.     UINT32                  Flags);
  331.  
  332. void
  333. AcpiDbCreateExecutionThreads (
  334.     char                    *NumThreadsArg,
  335.     char                    *NumLoopsArg,
  336.     char                    *MethodNameArg);
  337.  
  338. #ifdef ACPI_DBG_TRACK_ALLOCATIONS
  339. UINT32
  340. AcpiDbGetCacheInfo (
  341.     ACPI_MEMORY_LIST        *Cache);
  342. #endif
  343.  
  344.  
  345. /*
  346.  * dbfileio - Debugger file I/O commands
  347.  */
  348. ACPI_OBJECT_TYPE
  349. AcpiDbMatchArgument (
  350.     char                    *UserArgument,
  351.     ARGUMENT_INFO           *Arguments);
  352.  
  353. void
  354. AcpiDbCloseDebugFile (
  355.     void);
  356.  
  357. void
  358. AcpiDbOpenDebugFile (
  359.     char                    *Name);
  360.  
  361. ACPI_STATUS
  362. AcpiDbLoadAcpiTable (
  363.     char                    *Filename);
  364.  
  365. ACPI_STATUS
  366. AcpiDbGetTableFromFile (
  367.     char                    *Filename,
  368.     ACPI_TABLE_HEADER       **Table);
  369.  
  370. ACPI_STATUS
  371. AcpiDbReadTableFromFile (
  372.     char                    *Filename,
  373.     ACPI_TABLE_HEADER       **Table);
  374.  
  375.  
  376. /*
  377.  * dbhistry - debugger HISTORY command
  378.  */
  379. void
  380. AcpiDbAddToHistory (
  381.     char                    *CommandLine);
  382.  
  383. void
  384. AcpiDbDisplayHistory (
  385.     void);
  386.  
  387. char *
  388. AcpiDbGetFromHistory (
  389.     char                    *CommandNumArg);
  390.  
  391.  
  392. /*
  393.  * dbinput - user front-end to the AML debugger
  394.  */
  395. ACPI_STATUS
  396. AcpiDbCommandDispatch (
  397.     char                    *InputBuffer,
  398.     ACPI_WALK_STATE         *WalkState,
  399.     ACPI_PARSE_OBJECT       *Op);
  400.  
  401. void ACPI_SYSTEM_XFACE
  402. AcpiDbExecuteThread (
  403.     void                    *Context);
  404.  
  405. ACPI_STATUS
  406. AcpiDbUserCommands (
  407.     char                    Prompt,
  408.     ACPI_PARSE_OBJECT       *Op);
  409.  
  410.  
  411. /*
  412.  * dbstats - Generation and display of ACPI table statistics
  413.  */
  414. void
  415. AcpiDbGenerateStatistics (
  416.     ACPI_PARSE_OBJECT       *Root,
  417.     BOOLEAN                 IsMethod);
  418.  
  419. ACPI_STATUS
  420. AcpiDbDisplayStatistics (
  421.     char                    *TypeArg);
  422.  
  423.  
  424. /*
  425.  * dbutils - AML debugger utilities
  426.  */
  427. void
  428. AcpiDbSetOutputDestination (
  429.     UINT32                  Where);
  430.  
  431. void
  432. AcpiDbDumpExternalObject (
  433.     ACPI_OBJECT             *ObjDesc,
  434.     UINT32                  Level);
  435.  
  436. void
  437. AcpiDbPrepNamestring (
  438.     char                    *Name);
  439.  
  440. ACPI_NAMESPACE_NODE *
  441. AcpiDbLocalNsLookup (
  442.     char                    *Name);
  443.  
  444. void
  445. AcpiDbUInt32ToHexString (
  446.     UINT32                  Value,
  447.     char                    *Buffer);
  448.  
  449. #endif  /* __ACDEBUG_H__ */
  450.