1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Module Name: acapps - common include for ACPI applications/tools 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7d244b227SJung-uk Kim /* 8*313a0c13SJung-uk Kim * Copyright (C) 2000 - 2014, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13d244b227SJung-uk Kim * are met: 14d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16d244b227SJung-uk Kim * without modification. 17d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21d244b227SJung-uk Kim * binary redistribution. 22d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30d244b227SJung-uk Kim * NO WARRANTY 31d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42d244b227SJung-uk Kim */ 43a9f12690SJung-uk Kim 44a9f12690SJung-uk Kim #ifndef _ACAPPS 45a9f12690SJung-uk Kim #define _ACAPPS 46a9f12690SJung-uk Kim 47a9f12690SJung-uk Kim 48a9f12690SJung-uk Kim #ifdef _MSC_VER /* disable some level-4 warnings */ 49a9f12690SJung-uk Kim #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ 50a9f12690SJung-uk Kim #endif 51a9f12690SJung-uk Kim 523c1812acSJung-uk Kim /* Common info for tool signons */ 533c1812acSJung-uk Kim 543c1812acSJung-uk Kim #define ACPICA_NAME "Intel ACPI Component Architecture" 55*313a0c13SJung-uk Kim #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2014 Intel Corporation" 563c1812acSJung-uk Kim 573c1812acSJung-uk Kim #if ACPI_MACHINE_WIDTH == 64 583c1812acSJung-uk Kim #define ACPI_WIDTH "-64" 593c1812acSJung-uk Kim 603c1812acSJung-uk Kim #elif ACPI_MACHINE_WIDTH == 32 613c1812acSJung-uk Kim #define ACPI_WIDTH "-32" 623c1812acSJung-uk Kim 633c1812acSJung-uk Kim #else 643c1812acSJung-uk Kim #error unknown ACPI_MACHINE_WIDTH 653c1812acSJung-uk Kim #define ACPI_WIDTH "-??" 663c1812acSJung-uk Kim 673c1812acSJung-uk Kim #endif 683c1812acSJung-uk Kim 693c1812acSJung-uk Kim /* Macros for signons and file headers */ 703c1812acSJung-uk Kim 713c1812acSJung-uk Kim #define ACPI_COMMON_SIGNON(UtilityName) \ 723c1812acSJung-uk Kim "\n%s\n%s version %8.8X%s\n%s\n\n", \ 733c1812acSJung-uk Kim ACPICA_NAME, \ 743c1812acSJung-uk Kim UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 753c1812acSJung-uk Kim ACPICA_COPYRIGHT 763c1812acSJung-uk Kim 773c1812acSJung-uk Kim #define ACPI_COMMON_HEADER(UtilityName, Prefix) \ 783c1812acSJung-uk Kim "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \ 793c1812acSJung-uk Kim Prefix, ACPICA_NAME, \ 803c1812acSJung-uk Kim Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 813c1812acSJung-uk Kim Prefix, ACPICA_COPYRIGHT, \ 823c1812acSJung-uk Kim Prefix 833c1812acSJung-uk Kim 843f0275a0SJung-uk Kim /* Macros for usage messages */ 853f0275a0SJung-uk Kim 863f0275a0SJung-uk Kim #define ACPI_USAGE_HEADER(Usage) \ 87*313a0c13SJung-uk Kim AcpiOsPrintf ("Usage: %s\nOptions:\n", Usage); 88*313a0c13SJung-uk Kim 89*313a0c13SJung-uk Kim #define ACPI_USAGE_TEXT(Description) \ 90*313a0c13SJung-uk Kim AcpiOsPrintf (Description); 913f0275a0SJung-uk Kim 923f0275a0SJung-uk Kim #define ACPI_OPTION(Name, Description) \ 93*313a0c13SJung-uk Kim AcpiOsPrintf (" %-18s%s\n", Name, Description); 943f0275a0SJung-uk Kim 953f0275a0SJung-uk Kim 96a9f12690SJung-uk Kim #define FILE_SUFFIX_DISASSEMBLY "dsl" 97a9f12690SJung-uk Kim #define ACPI_TABLE_FILE_SUFFIX ".dat" 98a9f12690SJung-uk Kim 99a9f12690SJung-uk Kim 100f556842eSJung-uk Kim /* 101f556842eSJung-uk Kim * getopt 102f556842eSJung-uk Kim */ 103a9f12690SJung-uk Kim int 104a9f12690SJung-uk Kim AcpiGetopt( 105a9f12690SJung-uk Kim int argc, 106a9f12690SJung-uk Kim char **argv, 107a9f12690SJung-uk Kim char *opts); 108a9f12690SJung-uk Kim 109a9d8d09cSJung-uk Kim int 110a9d8d09cSJung-uk Kim AcpiGetoptArgument ( 111a9d8d09cSJung-uk Kim int argc, 112a9d8d09cSJung-uk Kim char **argv); 113a9d8d09cSJung-uk Kim 114f556842eSJung-uk Kim extern int AcpiGbl_Optind; 1159a179dd8SJung-uk Kim extern int AcpiGbl_Opterr; 116a9d8d09cSJung-uk Kim extern int AcpiGbl_SubOptChar; 117f556842eSJung-uk Kim extern char *AcpiGbl_Optarg; 118f556842eSJung-uk Kim 119f556842eSJung-uk Kim 120*313a0c13SJung-uk Kim /* 121*313a0c13SJung-uk Kim * cmfsize - Common get file size function 122*313a0c13SJung-uk Kim */ 123*313a0c13SJung-uk Kim UINT32 124*313a0c13SJung-uk Kim CmGetFileSize ( 125*313a0c13SJung-uk Kim ACPI_FILE File); 126*313a0c13SJung-uk Kim 127*313a0c13SJung-uk Kim 128a9d8d09cSJung-uk Kim #ifndef ACPI_DUMP_APP 129a9f12690SJung-uk Kim /* 130a9f12690SJung-uk Kim * adisasm 131a9f12690SJung-uk Kim */ 132a9f12690SJung-uk Kim ACPI_STATUS 133a9f12690SJung-uk Kim AdAmlDisassemble ( 134a9f12690SJung-uk Kim BOOLEAN OutToFile, 135a9f12690SJung-uk Kim char *Filename, 136a9f12690SJung-uk Kim char *Prefix, 137*313a0c13SJung-uk Kim char **OutFilename); 138a9f12690SJung-uk Kim 139a9f12690SJung-uk Kim void 140f556842eSJung-uk Kim AdPrintStatistics ( 141f556842eSJung-uk Kim void); 142a9f12690SJung-uk Kim 143a9f12690SJung-uk Kim ACPI_STATUS 144a9f12690SJung-uk Kim AdFindDsdt( 145a9f12690SJung-uk Kim UINT8 **DsdtPtr, 146a9f12690SJung-uk Kim UINT32 *DsdtLength); 147a9f12690SJung-uk Kim 148a9f12690SJung-uk Kim void 149f556842eSJung-uk Kim AdDumpTables ( 150f556842eSJung-uk Kim void); 151a9f12690SJung-uk Kim 152a9f12690SJung-uk Kim ACPI_STATUS 153a9f12690SJung-uk Kim AdGetLocalTables ( 154*313a0c13SJung-uk Kim void); 155a9f12690SJung-uk Kim 156a9f12690SJung-uk Kim ACPI_STATUS 157a9f12690SJung-uk Kim AdParseTable ( 158a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 159a9f12690SJung-uk Kim ACPI_OWNER_ID *OwnerId, 160a9f12690SJung-uk Kim BOOLEAN LoadTable, 161a9f12690SJung-uk Kim BOOLEAN External); 162a9f12690SJung-uk Kim 163a9f12690SJung-uk Kim ACPI_STATUS 164a9f12690SJung-uk Kim AdDisplayTables ( 165a9f12690SJung-uk Kim char *Filename, 166a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table); 167a9f12690SJung-uk Kim 168a9f12690SJung-uk Kim ACPI_STATUS 169f556842eSJung-uk Kim AdDisplayStatistics ( 170f556842eSJung-uk Kim void); 171f556842eSJung-uk Kim 172a9f12690SJung-uk Kim 173a9f12690SJung-uk Kim /* 174a9f12690SJung-uk Kim * adwalk 175a9f12690SJung-uk Kim */ 176a9f12690SJung-uk Kim void 177a9f12690SJung-uk Kim AcpiDmCrossReferenceNamespace ( 178a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 179a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 180a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 181a9f12690SJung-uk Kim 182a9f12690SJung-uk Kim void 183a9f12690SJung-uk Kim AcpiDmDumpTree ( 184a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 185a9f12690SJung-uk Kim 186a9f12690SJung-uk Kim void 187a9f12690SJung-uk Kim AcpiDmFindOrphanMethods ( 188a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 189a9f12690SJung-uk Kim 190a9f12690SJung-uk Kim void 191a9f12690SJung-uk Kim AcpiDmFinishNamespaceLoad ( 192a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 193a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 194a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 195a9f12690SJung-uk Kim 196a9f12690SJung-uk Kim void 197a9f12690SJung-uk Kim AcpiDmConvertResourceIndexes ( 198a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 199a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot); 200a9f12690SJung-uk Kim 201f556842eSJung-uk Kim 202a9f12690SJung-uk Kim /* 203a9f12690SJung-uk Kim * adfile 204a9f12690SJung-uk Kim */ 205a9f12690SJung-uk Kim ACPI_STATUS 206a9f12690SJung-uk Kim AdInitialize ( 207a9f12690SJung-uk Kim void); 208a9f12690SJung-uk Kim 209a9f12690SJung-uk Kim char * 210a9f12690SJung-uk Kim FlGenerateFilename ( 211a9f12690SJung-uk Kim char *InputFilename, 212a9f12690SJung-uk Kim char *Suffix); 213a9f12690SJung-uk Kim 214a9f12690SJung-uk Kim ACPI_STATUS 215a9f12690SJung-uk Kim FlSplitInputPathname ( 216a9f12690SJung-uk Kim char *InputPath, 217a9f12690SJung-uk Kim char **OutDirectoryPath, 218a9f12690SJung-uk Kim char **OutFilename); 219a9f12690SJung-uk Kim 220a9f12690SJung-uk Kim char * 221a9f12690SJung-uk Kim AdGenerateFilename ( 222a9f12690SJung-uk Kim char *Prefix, 223a9f12690SJung-uk Kim char *TableId); 224a9f12690SJung-uk Kim 225a9f12690SJung-uk Kim void 226a9f12690SJung-uk Kim AdWriteTable ( 227a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 228a9f12690SJung-uk Kim UINT32 Length, 229a9f12690SJung-uk Kim char *TableName, 230a9f12690SJung-uk Kim char *OemTableId); 231a9d8d09cSJung-uk Kim #endif 232a9f12690SJung-uk Kim 233a9f12690SJung-uk Kim #endif /* _ACAPPS */ 234