10d02842fSSascha Wildner /****************************************************************************** 20d02842fSSascha Wildner * 30d02842fSSascha Wildner * Module Name: acpidump.h - Include file for AcpiDump utility 40d02842fSSascha Wildner * 50d02842fSSascha Wildner *****************************************************************************/ 60d02842fSSascha Wildner 70d02842fSSascha Wildner /* 8fe7b5cb4SSascha Wildner * Copyright (C) 2000 - 2015, 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 449e1c0880SSascha Wildner /* 459e1c0880SSascha Wildner * Global variables. Defined in main.c only, externed in all other files 469e1c0880SSascha Wildner */ 479e1c0880SSascha Wildner #ifdef _DECLARE_GLOBALS 489e1c0880SSascha Wildner #define EXTERN 499e1c0880SSascha Wildner #define INIT_GLOBAL(a,b) a=b 509e1c0880SSascha Wildner #else 519e1c0880SSascha Wildner #define EXTERN extern 529e1c0880SSascha Wildner #define INIT_GLOBAL(a,b) a 539e1c0880SSascha Wildner #endif 549e1c0880SSascha Wildner 550d02842fSSascha Wildner #include "acpi.h" 560d02842fSSascha Wildner #include "accommon.h" 570d02842fSSascha Wildner #include "actables.h" 580d02842fSSascha Wildner 590d02842fSSascha Wildner #include <stdio.h> 600d02842fSSascha Wildner #include <fcntl.h> 610d02842fSSascha Wildner #include <errno.h> 620d02842fSSascha Wildner #include <sys/stat.h> 630d02842fSSascha Wildner 640d02842fSSascha Wildner 650d02842fSSascha Wildner /* Globals */ 660d02842fSSascha Wildner 670d02842fSSascha Wildner EXTERN BOOLEAN INIT_GLOBAL (Gbl_SummaryMode, FALSE); 680d02842fSSascha Wildner EXTERN BOOLEAN INIT_GLOBAL (Gbl_VerboseMode, FALSE); 690d02842fSSascha Wildner EXTERN BOOLEAN INIT_GLOBAL (Gbl_BinaryMode, FALSE); 70*25ca8c79SSascha Wildner EXTERN BOOLEAN INIT_GLOBAL (Gbl_DumpCustomizedTables, TRUE); 719e1c0880SSascha Wildner EXTERN BOOLEAN INIT_GLOBAL (Gbl_DoNotDumpXsdt, FALSE); 725f39c7e7SSascha Wildner EXTERN ACPI_FILE INIT_GLOBAL (Gbl_OutputFile, NULL); 730d02842fSSascha Wildner EXTERN char INIT_GLOBAL (*Gbl_OutputFilename, NULL); 740d02842fSSascha Wildner EXTERN UINT64 INIT_GLOBAL (Gbl_RsdpBase, 0); 750d02842fSSascha Wildner 760d02842fSSascha Wildner /* Globals required for use with ACPICA modules */ 770d02842fSSascha Wildner 780d02842fSSascha Wildner #ifdef _DECLARE_GLOBALS 790d02842fSSascha Wildner UINT8 AcpiGbl_IntegerByteWidth = 8; 800d02842fSSascha Wildner #endif 810d02842fSSascha Wildner 820d02842fSSascha Wildner /* Action table used to defer requested options */ 830d02842fSSascha Wildner 840d02842fSSascha Wildner typedef struct ap_dump_action 850d02842fSSascha Wildner { 860d02842fSSascha Wildner char *Argument; 870d02842fSSascha Wildner UINT32 ToBeDone; 880d02842fSSascha Wildner 890d02842fSSascha Wildner } AP_DUMP_ACTION; 900d02842fSSascha Wildner 910d02842fSSascha Wildner #define AP_MAX_ACTIONS 32 920d02842fSSascha Wildner 930d02842fSSascha Wildner #define AP_DUMP_ALL_TABLES 0 940d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_ADDRESS 1 950d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_NAME 2 960d02842fSSascha Wildner #define AP_DUMP_TABLE_BY_FILE 3 970d02842fSSascha Wildner 980d02842fSSascha Wildner #define AP_MAX_ACPI_FILES 256 /* Prevent infinite loops */ 990d02842fSSascha Wildner 1000d02842fSSascha Wildner /* Minimum FADT sizes for various table addresses */ 1010d02842fSSascha Wildner 1020d02842fSSascha Wildner #define MIN_FADT_FOR_DSDT (ACPI_FADT_OFFSET (Dsdt) + sizeof (UINT32)) 1030d02842fSSascha Wildner #define MIN_FADT_FOR_FACS (ACPI_FADT_OFFSET (Facs) + sizeof (UINT32)) 1040d02842fSSascha Wildner #define MIN_FADT_FOR_XDSDT (ACPI_FADT_OFFSET (XDsdt) + sizeof (UINT64)) 1050d02842fSSascha Wildner #define MIN_FADT_FOR_XFACS (ACPI_FADT_OFFSET (XFacs) + sizeof (UINT64)) 1060d02842fSSascha Wildner 1070d02842fSSascha Wildner 1080d02842fSSascha Wildner /* 1090d02842fSSascha Wildner * apdump - Table get/dump routines 1100d02842fSSascha Wildner */ 1110d02842fSSascha Wildner int 1120d02842fSSascha Wildner ApDumpTableFromFile ( 1130d02842fSSascha Wildner char *Pathname); 1140d02842fSSascha Wildner 1150d02842fSSascha Wildner int 1160d02842fSSascha Wildner ApDumpTableByName ( 1170d02842fSSascha Wildner char *Signature); 1180d02842fSSascha Wildner 1190d02842fSSascha Wildner int 1200d02842fSSascha Wildner ApDumpTableByAddress ( 1210d02842fSSascha Wildner char *AsciiAddress); 1220d02842fSSascha Wildner 1230d02842fSSascha Wildner int 1240d02842fSSascha Wildner ApDumpAllTables ( 1250d02842fSSascha Wildner void); 1260d02842fSSascha Wildner 1270d02842fSSascha Wildner BOOLEAN 1280d02842fSSascha Wildner ApIsValidHeader ( 1290d02842fSSascha Wildner ACPI_TABLE_HEADER *Table); 1300d02842fSSascha Wildner 1310d02842fSSascha Wildner BOOLEAN 1320d02842fSSascha Wildner ApIsValidChecksum ( 1330d02842fSSascha Wildner ACPI_TABLE_HEADER *Table); 1340d02842fSSascha Wildner 1350d02842fSSascha Wildner UINT32 1360d02842fSSascha Wildner ApGetTableLength ( 1370d02842fSSascha Wildner ACPI_TABLE_HEADER *Table); 1380d02842fSSascha Wildner 1390d02842fSSascha Wildner 1400d02842fSSascha Wildner /* 1410d02842fSSascha Wildner * apfiles - File I/O utilities 1420d02842fSSascha Wildner */ 1430d02842fSSascha Wildner int 1440d02842fSSascha Wildner ApOpenOutputFile ( 1450d02842fSSascha Wildner char *Pathname); 1460d02842fSSascha Wildner 1470d02842fSSascha Wildner int 1480d02842fSSascha Wildner ApWriteToBinaryFile ( 1490d02842fSSascha Wildner ACPI_TABLE_HEADER *Table, 1500d02842fSSascha Wildner UINT32 Instance); 1510d02842fSSascha Wildner 1520d02842fSSascha Wildner ACPI_TABLE_HEADER * 1530d02842fSSascha Wildner ApGetTableFromFile ( 1540d02842fSSascha Wildner char *Pathname, 1550d02842fSSascha Wildner UINT32 *FileSize); 156