1 /******************************************************************************
   2  *
   3  * Module Name: acpidump.h - Include file for AcpiDump utility
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2013, 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 /* Local RSDP signature (Not the same as the actual signature which is "RSD PTR ") */
  94 
  95 #define AP_DUMP_SIG_RSDP            "RSDP"
  96 
  97 #define AP_MAX_ACTIONS              32
  98 
  99 #define AP_DUMP_ALL_TABLES          0
 100 #define AP_DUMP_TABLE_BY_ADDRESS    1
 101 #define AP_DUMP_TABLE_BY_NAME       2
 102 #define AP_DUMP_TABLE_BY_FILE       3
 103 
 104 #define AP_MAX_ACPI_FILES           256 /* Prevent infinite loops */
 105 
 106 /* Minimum FADT sizes for various table addresses */
 107 
 108 #define MIN_FADT_FOR_DSDT           (ACPI_FADT_OFFSET (Dsdt) + sizeof (UINT32))
 109 #define MIN_FADT_FOR_FACS           (ACPI_FADT_OFFSET (Facs) + sizeof (UINT32))
 110 #define MIN_FADT_FOR_XDSDT          (ACPI_FADT_OFFSET (XDsdt) + sizeof (UINT64))
 111 #define MIN_FADT_FOR_XFACS          (ACPI_FADT_OFFSET (XFacs) + sizeof (UINT64))
 112 
 113 
 114 /*
 115  * apdump - Table get/dump routines
 116  */
 117 int
 118 ApDumpTableFromFile (
 119     char                    *Pathname);
 120 
 121 int
 122 ApDumpTableByName (
 123     char                    *Signature);
 124 
 125 int
 126 ApDumpTableByAddress (
 127     char                    *AsciiAddress);
 128 
 129 int
 130 ApDumpAllTables (
 131     void);
 132 
 133 BOOLEAN
 134 ApIsValidHeader (
 135     ACPI_TABLE_HEADER       *Table);
 136 
 137 BOOLEAN
 138 ApIsValidChecksum (
 139     ACPI_TABLE_HEADER       *Table);
 140 
 141 UINT32
 142 ApGetTableLength (
 143     ACPI_TABLE_HEADER       *Table);
 144 
 145 
 146 /*
 147  * apfiles - File I/O utilities
 148  */
 149 UINT32
 150 ApGetFileSize (
 151     FILE                    *File);
 152 
 153 int
 154 ApOpenOutputFile (
 155     char                    *Pathname);
 156 
 157 int
 158 ApWriteToBinaryFile (
 159     ACPI_TABLE_HEADER       *Table,
 160     UINT32                  Instance);
 161 
 162 ACPI_TABLE_HEADER *
 163 ApGetTableFromFile (
 164     char                    *Pathname,
 165     UINT32                  *FileSize);