Subversion Repositories Kolibri OS

Rev

Rev 1498 | 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 - 2011, 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  0x4000      /* 16K buffer for return objects */
  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_NAMESPACE_NODE *
  174. AcpiDbConvertToNode (
  175.     char                    *InString);
  176.  
  177. void
  178. AcpiDbDisplayTableInfo (
  179.     char                    *TableArg);
  180.  
  181. void
  182. AcpiDbUnloadAcpiTable (
  183.     char                    *TableArg,
  184.     char                    *InstanceArg);
  185.  
  186. void
  187. AcpiDbSendNotify (
  188.     char                    *Name,
  189.     UINT32                  Value);
  190.  
  191. void
  192. AcpiDbDisplayInterfaces (
  193.     char                    *ActionArg,
  194.     char                    *InterfaceNameArg);
  195.  
  196. ACPI_STATUS
  197. AcpiDbSleep (
  198.     char                    *ObjectArg);
  199.  
  200. void
  201. AcpiDbDisplayLocks (
  202.     void);
  203.  
  204. void
  205. AcpiDbDisplayResources (
  206.     char                    *ObjectArg);
  207.  
  208. void
  209. AcpiDbDisplayGpes (
  210.     void);
  211.  
  212. void
  213. AcpiDbDisplayHandlers (
  214.     void);
  215.  
  216. void
  217. AcpiDbGenerateGpe (
  218.     char                    *GpeArg,
  219.     char                    *BlockArg);
  220.  
  221.  
  222. /*
  223.  * dbmethod - control method commands
  224.  */
  225. void
  226. AcpiDbSetMethodBreakpoint (
  227.     char                    *Location,
  228.     ACPI_WALK_STATE         *WalkState,
  229.     ACPI_PARSE_OBJECT       *Op);
  230.  
  231. void
  232. AcpiDbSetMethodCallBreakpoint (
  233.     ACPI_PARSE_OBJECT       *Op);
  234.  
  235. void
  236. AcpiDbSetMethodData (
  237.     char                    *TypeArg,
  238.     char                    *IndexArg,
  239.     char                    *ValueArg);
  240.  
  241. ACPI_STATUS
  242. AcpiDbDisassembleMethod (
  243.     char                    *Name);
  244.  
  245. void
  246. AcpiDbDisassembleAml (
  247.     char                    *Statements,
  248.     ACPI_PARSE_OBJECT       *Op);
  249.  
  250. void
  251. AcpiDbBatchExecute (
  252.     char                    *CountArg);
  253.  
  254.  
  255. /*
  256.  * dbnames - namespace commands
  257.  */
  258. void
  259. AcpiDbSetScope (
  260.     char                    *Name);
  261.  
  262. void
  263. AcpiDbDumpNamespace (
  264.     char                    *StartArg,
  265.     char                    *DepthArg);
  266.  
  267. void
  268. AcpiDbDumpNamespaceByOwner (
  269.     char                    *OwnerArg,
  270.     char                    *DepthArg);
  271.  
  272. ACPI_STATUS
  273. AcpiDbFindNameInNamespace (
  274.     char                    *NameArg);
  275.  
  276. void
  277. AcpiDbCheckPredefinedNames (
  278.     void);
  279.  
  280. ACPI_STATUS
  281. AcpiDbDisplayObjects (
  282.     char                    *ObjTypeArg,
  283.     char                    *DisplayCountArg);
  284.  
  285. void
  286. AcpiDbCheckIntegrity (
  287.     void);
  288.  
  289. void
  290. AcpiDbFindReferences (
  291.     char                    *ObjectArg);
  292.  
  293. void
  294. AcpiDbGetBusInfo (
  295.     void);
  296.  
  297.  
  298. /*
  299.  * dbdisply - debug display commands
  300.  */
  301. void
  302. AcpiDbDisplayMethodInfo (
  303.     ACPI_PARSE_OBJECT       *Op);
  304.  
  305. void
  306. AcpiDbDecodeAndDisplayObject (
  307.     char                    *Target,
  308.     char                    *OutputType);
  309.  
  310. void
  311. AcpiDbDisplayResultObject (
  312.     ACPI_OPERAND_OBJECT     *ObjDesc,
  313.     ACPI_WALK_STATE         *WalkState);
  314.  
  315. ACPI_STATUS
  316. AcpiDbDisplayAllMethods (
  317.     char                    *DisplayCountArg);
  318.  
  319. void
  320. AcpiDbDisplayArguments (
  321.     void);
  322.  
  323. void
  324. AcpiDbDisplayLocals (
  325.     void);
  326.  
  327. void
  328. AcpiDbDisplayResults (
  329.     void);
  330.  
  331. void
  332. AcpiDbDisplayCallingTree (
  333.     void);
  334.  
  335. void
  336. AcpiDbDisplayObjectType (
  337.     char                    *ObjectArg);
  338.  
  339. void
  340. AcpiDbDisplayArgumentObject (
  341.     ACPI_OPERAND_OBJECT     *ObjDesc,
  342.     ACPI_WALK_STATE         *WalkState);
  343.  
  344.  
  345. /*
  346.  * dbexec - debugger control method execution
  347.  */
  348. void
  349. AcpiDbExecute (
  350.     char                    *Name,
  351.     char                    **Args,
  352.     ACPI_OBJECT_TYPE        *Types,
  353.     UINT32                  Flags);
  354.  
  355. void
  356. AcpiDbCreateExecutionThreads (
  357.     char                    *NumThreadsArg,
  358.     char                    *NumLoopsArg,
  359.     char                    *MethodNameArg);
  360.  
  361. #ifdef ACPI_DBG_TRACK_ALLOCATIONS
  362. UINT32
  363. AcpiDbGetCacheInfo (
  364.     ACPI_MEMORY_LIST        *Cache);
  365. #endif
  366.  
  367.  
  368. /*
  369.  * dbfileio - Debugger file I/O commands
  370.  */
  371. ACPI_OBJECT_TYPE
  372. AcpiDbMatchArgument (
  373.     char                    *UserArgument,
  374.     ARGUMENT_INFO           *Arguments);
  375.  
  376. void
  377. AcpiDbCloseDebugFile (
  378.     void);
  379.  
  380. void
  381. AcpiDbOpenDebugFile (
  382.     char                    *Name);
  383.  
  384. ACPI_STATUS
  385. AcpiDbLoadAcpiTable (
  386.     char                    *Filename);
  387.  
  388. ACPI_STATUS
  389. AcpiDbGetTableFromFile (
  390.     char                    *Filename,
  391.     ACPI_TABLE_HEADER       **Table);
  392.  
  393. ACPI_STATUS
  394. AcpiDbReadTableFromFile (
  395.     char                    *Filename,
  396.     ACPI_TABLE_HEADER       **Table);
  397.  
  398.  
  399. /*
  400.  * dbhistry - debugger HISTORY command
  401.  */
  402. void
  403. AcpiDbAddToHistory (
  404.     char                    *CommandLine);
  405.  
  406. void
  407. AcpiDbDisplayHistory (
  408.     void);
  409.  
  410. char *
  411. AcpiDbGetFromHistory (
  412.     char                    *CommandNumArg);
  413.  
  414.  
  415. /*
  416.  * dbinput - user front-end to the AML debugger
  417.  */
  418. ACPI_STATUS
  419. AcpiDbCommandDispatch (
  420.     char                    *InputBuffer,
  421.     ACPI_WALK_STATE         *WalkState,
  422.     ACPI_PARSE_OBJECT       *Op);
  423.  
  424. void ACPI_SYSTEM_XFACE
  425. AcpiDbExecuteThread (
  426.     void                    *Context);
  427.  
  428. ACPI_STATUS
  429. AcpiDbUserCommands (
  430.     char                    Prompt,
  431.     ACPI_PARSE_OBJECT       *Op);
  432.  
  433. char *
  434. AcpiDbGetNextToken (
  435.     char                    *String,
  436.     char                    **Next,
  437.     ACPI_OBJECT_TYPE        *ReturnType);
  438.  
  439.  
  440. /*
  441.  * dbstats - Generation and display of ACPI table statistics
  442.  */
  443. void
  444. AcpiDbGenerateStatistics (
  445.     ACPI_PARSE_OBJECT       *Root,
  446.     BOOLEAN                 IsMethod);
  447.  
  448. ACPI_STATUS
  449. AcpiDbDisplayStatistics (
  450.     char                    *TypeArg);
  451.  
  452.  
  453. /*
  454.  * dbutils - AML debugger utilities
  455.  */
  456. void
  457. AcpiDbSetOutputDestination (
  458.     UINT32                  Where);
  459.  
  460. void
  461. AcpiDbDumpExternalObject (
  462.     ACPI_OBJECT             *ObjDesc,
  463.     UINT32                  Level);
  464.  
  465. void
  466. AcpiDbPrepNamestring (
  467.     char                    *Name);
  468.  
  469. ACPI_NAMESPACE_NODE *
  470. AcpiDbLocalNsLookup (
  471.     char                    *Name);
  472.  
  473. void
  474. AcpiDbUInt32ToHexString (
  475.     UINT32                  Value,
  476.     char                    *Buffer);
  477.  
  478. #endif  /* __ACDEBUG_H__ */
  479.