xref: /dflybsd-src/sys/contrib/dev/acpica/source/tools/acpidump/acpidump.h (revision 9e1c08804a46f1c1a9cd11e190ddba7d2bc4abed)
10d02842fSSascha Wildner /******************************************************************************
20d02842fSSascha Wildner  *
30d02842fSSascha Wildner  * Module Name: acpidump.h - Include file for AcpiDump utility
40d02842fSSascha Wildner  *
50d02842fSSascha Wildner  *****************************************************************************/
60d02842fSSascha Wildner 
70d02842fSSascha Wildner /*
820294b7eSSascha Wildner  * Copyright (C) 2000 - 2014, Intel Corp.
90d02842fSSascha Wildner  * All rights reserved.
100d02842fSSascha Wildner  *
110d02842fSSascha Wildner  * Redistribution and use in source and binary forms, with or without
120d02842fSSascha Wildner  * modification, are permitted provided that the following conditions
130d02842fSSascha Wildner  * are met:
140d02842fSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
150d02842fSSascha Wildner  *    notice, this list of conditions, and the following disclaimer,
160d02842fSSascha Wildner  *    without modification.
170d02842fSSascha Wildner  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
180d02842fSSascha Wildner  *    substantially similar to the "NO WARRANTY" disclaimer below
190d02842fSSascha Wildner  *    ("Disclaimer") and any redistribution must be conditioned upon
200d02842fSSascha Wildner  *    including a substantially similar Disclaimer requirement for further
210d02842fSSascha Wildner  *    binary redistribution.
220d02842fSSascha Wildner  * 3. Neither the names of the above-listed copyright holders nor the names
230d02842fSSascha Wildner  *    of any contributors may be used to endorse or promote products derived
240d02842fSSascha Wildner  *    from this software without specific prior written permission.
250d02842fSSascha Wildner  *
260d02842fSSascha Wildner  * Alternatively, this software may be distributed under the terms of the
270d02842fSSascha Wildner  * GNU General Public License ("GPL") version 2 as published by the Free
280d02842fSSascha Wildner  * Software Foundation.
290d02842fSSascha Wildner  *
300d02842fSSascha Wildner  * NO WARRANTY
310d02842fSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
320d02842fSSascha Wildner  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
330d02842fSSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
340d02842fSSascha Wildner  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
350d02842fSSascha Wildner  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
360d02842fSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
370d02842fSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
380d02842fSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
390d02842fSSascha Wildner  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
400d02842fSSascha Wildner  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
410d02842fSSascha Wildner  * POSSIBILITY OF SUCH DAMAGES.
420d02842fSSascha Wildner  */
430d02842fSSascha Wildner 
44*9e1c0880SSascha Wildner 
45*9e1c0880SSascha Wildner /*
46*9e1c0880SSascha Wildner  * Global variables. Defined in main.c only, externed in all other files
47*9e1c0880SSascha Wildner  */
48*9e1c0880SSascha Wildner #ifdef _DECLARE_GLOBALS
49*9e1c0880SSascha Wildner #define EXTERN
50*9e1c0880SSascha Wildner #define INIT_GLOBAL(a,b)        a=b
51*9e1c0880SSascha Wildner #define DEFINE_ACPI_GLOBALS     1
52*9e1c0880SSascha Wildner #else
53*9e1c0880SSascha Wildner #define EXTERN                  extern
54*9e1c0880SSascha Wildner #define INIT_GLOBAL(a,b)        a
55*9e1c0880SSascha Wildner #endif
56*9e1c0880SSascha Wildner 
570d02842fSSascha Wildner #include "acpi.h"
580d02842fSSascha Wildner #include "accommon.h"
590d02842fSSascha Wildner #include "actables.h"
600d02842fSSascha Wildner 
610d02842fSSascha Wildner #include <stdio.h>
620d02842fSSascha Wildner #include <fcntl.h>
630d02842fSSascha Wildner #include <errno.h>
640d02842fSSascha Wildner #include <sys/stat.h>
650d02842fSSascha Wildner 
660d02842fSSascha Wildner 
670d02842fSSascha Wildner /* Globals */
680d02842fSSascha Wildner 
690d02842fSSascha Wildner EXTERN BOOLEAN              INIT_GLOBAL (Gbl_SummaryMode, FALSE);
700d02842fSSascha Wildner EXTERN BOOLEAN              INIT_GLOBAL (Gbl_VerboseMode, FALSE);
710d02842fSSascha Wildner EXTERN BOOLEAN              INIT_GLOBAL (Gbl_BinaryMode, FALSE);
720d02842fSSascha Wildner EXTERN BOOLEAN              INIT_GLOBAL (Gbl_DumpCustomizedTables, FALSE);
73*9e1c0880SSascha Wildner EXTERN BOOLEAN              INIT_GLOBAL (Gbl_DoNotDumpXsdt, FALSE);
740d02842fSSascha Wildner EXTERN FILE                 INIT_GLOBAL (*Gbl_OutputFile, NULL);
750d02842fSSascha Wildner EXTERN char                 INIT_GLOBAL (*Gbl_OutputFilename, NULL);
760d02842fSSascha Wildner EXTERN UINT64               INIT_GLOBAL (Gbl_RsdpBase, 0);
770d02842fSSascha Wildner 
780d02842fSSascha Wildner /* Globals required for use with ACPICA modules */
790d02842fSSascha Wildner 
800d02842fSSascha Wildner #ifdef _DECLARE_GLOBALS
810d02842fSSascha Wildner UINT8                       AcpiGbl_IntegerByteWidth = 8;
820d02842fSSascha Wildner #endif
830d02842fSSascha Wildner 
840d02842fSSascha Wildner /* Action table used to defer requested options */
850d02842fSSascha Wildner 
860d02842fSSascha Wildner typedef struct ap_dump_action
870d02842fSSascha Wildner {
880d02842fSSascha Wildner     char                    *Argument;
890d02842fSSascha Wildner     UINT32                  ToBeDone;
900d02842fSSascha Wildner 
910d02842fSSascha Wildner } AP_DUMP_ACTION;
920d02842fSSascha Wildner 
930d02842fSSascha Wildner #define AP_MAX_ACTIONS              32
940d02842fSSascha Wildner 
950d02842fSSascha Wildner #define AP_DUMP_ALL_TABLES          0
960d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_ADDRESS    1
970d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_NAME       2
980d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_FILE       3
990d02842fSSascha Wildner 
1000d02842fSSascha Wildner #define AP_MAX_ACPI_FILES           256 /* Prevent infinite loops */
1010d02842fSSascha Wildner 
1020d02842fSSascha Wildner /* Minimum FADT sizes for various table addresses */
1030d02842fSSascha Wildner 
1040d02842fSSascha Wildner #define MIN_FADT_FOR_DSDT           (ACPI_FADT_OFFSET (Dsdt) + sizeof (UINT32))
1050d02842fSSascha Wildner #define MIN_FADT_FOR_FACS           (ACPI_FADT_OFFSET (Facs) + sizeof (UINT32))
1060d02842fSSascha Wildner #define MIN_FADT_FOR_XDSDT          (ACPI_FADT_OFFSET (XDsdt) + sizeof (UINT64))
1070d02842fSSascha Wildner #define MIN_FADT_FOR_XFACS          (ACPI_FADT_OFFSET (XFacs) + sizeof (UINT64))
1080d02842fSSascha Wildner 
1090d02842fSSascha Wildner 
1100d02842fSSascha Wildner /*
1110d02842fSSascha Wildner  * apdump - Table get/dump routines
1120d02842fSSascha Wildner  */
1130d02842fSSascha Wildner int
1140d02842fSSascha Wildner ApDumpTableFromFile (
1150d02842fSSascha Wildner     char                    *Pathname);
1160d02842fSSascha Wildner 
1170d02842fSSascha Wildner int
1180d02842fSSascha Wildner ApDumpTableByName (
1190d02842fSSascha Wildner     char                    *Signature);
1200d02842fSSascha Wildner 
1210d02842fSSascha Wildner int
1220d02842fSSascha Wildner ApDumpTableByAddress (
1230d02842fSSascha Wildner     char                    *AsciiAddress);
1240d02842fSSascha Wildner 
1250d02842fSSascha Wildner int
1260d02842fSSascha Wildner ApDumpAllTables (
1270d02842fSSascha Wildner     void);
1280d02842fSSascha Wildner 
1290d02842fSSascha Wildner BOOLEAN
1300d02842fSSascha Wildner ApIsValidHeader (
1310d02842fSSascha Wildner     ACPI_TABLE_HEADER       *Table);
1320d02842fSSascha Wildner 
1330d02842fSSascha Wildner BOOLEAN
1340d02842fSSascha Wildner ApIsValidChecksum (
1350d02842fSSascha Wildner     ACPI_TABLE_HEADER       *Table);
1360d02842fSSascha Wildner 
1370d02842fSSascha Wildner UINT32
1380d02842fSSascha Wildner ApGetTableLength (
1390d02842fSSascha Wildner     ACPI_TABLE_HEADER       *Table);
1400d02842fSSascha Wildner 
1410d02842fSSascha Wildner 
1420d02842fSSascha Wildner /*
1430d02842fSSascha Wildner  * apfiles - File I/O utilities
1440d02842fSSascha Wildner  */
1450d02842fSSascha Wildner int
1460d02842fSSascha Wildner ApOpenOutputFile (
1470d02842fSSascha Wildner     char                    *Pathname);
1480d02842fSSascha Wildner 
1490d02842fSSascha Wildner int
1500d02842fSSascha Wildner ApWriteToBinaryFile (
1510d02842fSSascha Wildner     ACPI_TABLE_HEADER       *Table,
1520d02842fSSascha Wildner     UINT32                  Instance);
1530d02842fSSascha Wildner 
1540d02842fSSascha Wildner ACPI_TABLE_HEADER *
1550d02842fSSascha Wildner ApGetTableFromFile (
1560d02842fSSascha Wildner     char                    *Pathname,
1570d02842fSSascha Wildner     UINT32                  *FileSize);
158