1 /******************************************************************************
   2  *
   3  * Module Name: acpidump.h - Include file for AcpiDump utility
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2014, 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 #include "acpi.h"
  45 #include "accommon.h"
  46 #include "actables.h"
  47 
  48 #include <stdio.h>
  49 #include <fcntl.h>
  50 #include <errno.h>
  51 #include <sys/stat.h>
  52 
  53 /*
  54  * Global variables. Defined in main.c only, externed in all other files
  55  */
  56 #ifdef _DECLARE_GLOBALS
  57 #define EXTERN
  58 #define INIT_GLOBAL(a,b)        a=b
  59 #else
  60 #define EXTERN                  extern
  61 #define INIT_GLOBAL(a,b)        a
  62 #endif
  63 
  64 
  65 /* Globals */
  66 
  67 EXTERN BOOLEAN              INIT_GLOBAL (Gbl_SummaryMode, FALSE);
  68 EXTERN BOOLEAN              INIT_GLOBAL (Gbl_VerboseMode, FALSE);
  69 EXTERN BOOLEAN              INIT_GLOBAL (Gbl_BinaryMode, FALSE);
  70 EXTERN BOOLEAN              INIT_GLOBAL (Gbl_DumpCustomizedTables, FALSE);
  71 EXTERN FILE                 INIT_GLOBAL (*Gbl_OutputFile, NULL);
  72 EXTERN char                 INIT_GLOBAL (*Gbl_OutputFilename, NULL);
  73 EXTERN UINT64               INIT_GLOBAL (Gbl_RsdpBase, 0);
  74 
  75 /* Globals required for use with ACPICA modules */
  76 
  77 #ifdef _DECLARE_GLOBALS
  78 UINT8                       AcpiGbl_EnableInterpreterSlack = FALSE;
  79 UINT8                       AcpiGbl_IntegerByteWidth = 8;
  80 UINT32                      AcpiDbgLevel = 0;
  81 UINT32                      AcpiDbgLayer = 0;
  82 #endif
  83 
  84 /* Action table used to defer requested options */
  85 
  86 typedef struct ap_dump_action
  87 {
  88     char                    *Argument;
  89     UINT32                  ToBeDone;
  90 
  91 } AP_DUMP_ACTION;
  92 
  93 #define AP_MAX_ACTIONS              32
  94 
  95 #define AP_DUMP_ALL_TABLES          0
  96 #define AP_DUMP_TABLE_BY_ADDRESS    1
  97 #define AP_DUMP_TABLE_BY_NAME       2
  98 #define AP_DUMP_TABLE_BY_FILE       3
  99 
 100 #define AP_MAX_ACPI_FILES           256 /* Prevent infinite loops */
 101 
 102 /* Minimum FADT sizes for various table addresses */
 103 
 104 #define MIN_FADT_FOR_DSDT           (ACPI_FADT_OFFSET (Dsdt) + sizeof (UINT32))
 105 #define MIN_FADT_FOR_FACS           (ACPI_FADT_OFFSET (Facs) + sizeof (UINT32))
 106 #define MIN_FADT_FOR_XDSDT          (ACPI_FADT_OFFSET (XDsdt) + sizeof (UINT64))
 107 #define MIN_FADT_FOR_XFACS          (ACPI_FADT_OFFSET (XFacs) + sizeof (UINT64))
 108 
 109 
 110 /*
 111  * apdump - Table get/dump routines
 112  */
 113 int
 114 ApDumpTableFromFile (
 115     char                    *Pathname);
 116 
 117 int
 118 ApDumpTableByName (
 119     char                    *Signature);
 120 
 121 int
 122 ApDumpTableByAddress (
 123     char                    *AsciiAddress);
 124 
 125 int
 126 ApDumpAllTables (
 127     void);
 128 
 129 BOOLEAN
 130 ApIsValidHeader (
 131     ACPI_TABLE_HEADER       *Table);
 132 
 133 BOOLEAN
 134 ApIsValidChecksum (
 135     ACPI_TABLE_HEADER       *Table);
 136 
 137 UINT32
 138 ApGetTableLength (
 139     ACPI_TABLE_HEADER       *Table);
 140 
 141 
 142 /*
 143  * apfiles - File I/O utilities
 144  */
 145 UINT32
 146 ApGetFileSize (
 147     FILE                    *File);
 148 
 149 int
 150 ApOpenOutputFile (
 151     char                    *Pathname);
 152 
 153 int
 154 ApWriteToBinaryFile (
 155     ACPI_TABLE_HEADER       *Table,
 156     UINT32                  Instance);
 157 
 158 ACPI_TABLE_HEADER *
 159 ApGetTableFromFile (
 160     char                    *Pathname,
 161     UINT32                  *FileSize);