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 /* 8efcc2a30SJung-uk Kim * Copyright (C) 2000 - 2013, 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" 55efcc2a30SJung-uk Kim #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2013 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) \ 873f0275a0SJung-uk Kim printf ("Usage: %s\nOptions:\n", Usage); 883f0275a0SJung-uk Kim 893f0275a0SJung-uk Kim #define ACPI_OPTION(Name, Description) \ 903f0275a0SJung-uk Kim printf (" %-18s%s\n", Name, Description); 913f0275a0SJung-uk Kim 923f0275a0SJung-uk Kim 93a9f12690SJung-uk Kim #define FILE_SUFFIX_DISASSEMBLY "dsl" 94a9f12690SJung-uk Kim #define ACPI_TABLE_FILE_SUFFIX ".dat" 95a9f12690SJung-uk Kim 96a9f12690SJung-uk Kim 97f556842eSJung-uk Kim /* 98f556842eSJung-uk Kim * getopt 99f556842eSJung-uk Kim */ 100a9f12690SJung-uk Kim int 101a9f12690SJung-uk Kim AcpiGetopt( 102a9f12690SJung-uk Kim int argc, 103a9f12690SJung-uk Kim char **argv, 104a9f12690SJung-uk Kim char *opts); 105a9f12690SJung-uk Kim 106*a9d8d09cSJung-uk Kim int 107*a9d8d09cSJung-uk Kim AcpiGetoptArgument ( 108*a9d8d09cSJung-uk Kim int argc, 109*a9d8d09cSJung-uk Kim char **argv); 110*a9d8d09cSJung-uk Kim 111f556842eSJung-uk Kim extern int AcpiGbl_Optind; 1129a179dd8SJung-uk Kim extern int AcpiGbl_Opterr; 113*a9d8d09cSJung-uk Kim extern int AcpiGbl_SubOptChar; 114f556842eSJung-uk Kim extern char *AcpiGbl_Optarg; 115f556842eSJung-uk Kim 116f556842eSJung-uk Kim 117*a9d8d09cSJung-uk Kim #ifndef ACPI_DUMP_APP 118a9f12690SJung-uk Kim /* 119a9f12690SJung-uk Kim * adisasm 120a9f12690SJung-uk Kim */ 121a9f12690SJung-uk Kim ACPI_STATUS 122a9f12690SJung-uk Kim AdAmlDisassemble ( 123a9f12690SJung-uk Kim BOOLEAN OutToFile, 124a9f12690SJung-uk Kim char *Filename, 125a9f12690SJung-uk Kim char *Prefix, 126a9f12690SJung-uk Kim char **OutFilename, 127a9f12690SJung-uk Kim BOOLEAN GetAllTables); 128a9f12690SJung-uk Kim 129a9f12690SJung-uk Kim void 130f556842eSJung-uk Kim AdPrintStatistics ( 131f556842eSJung-uk Kim void); 132a9f12690SJung-uk Kim 133a9f12690SJung-uk Kim ACPI_STATUS 134a9f12690SJung-uk Kim AdFindDsdt( 135a9f12690SJung-uk Kim UINT8 **DsdtPtr, 136a9f12690SJung-uk Kim UINT32 *DsdtLength); 137a9f12690SJung-uk Kim 138a9f12690SJung-uk Kim void 139f556842eSJung-uk Kim AdDumpTables ( 140f556842eSJung-uk Kim void); 141a9f12690SJung-uk Kim 142a9f12690SJung-uk Kim ACPI_STATUS 143a9f12690SJung-uk Kim AdGetLocalTables ( 144a9f12690SJung-uk Kim char *Filename, 145a9f12690SJung-uk Kim BOOLEAN GetAllTables); 146a9f12690SJung-uk Kim 147a9f12690SJung-uk Kim ACPI_STATUS 148a9f12690SJung-uk Kim AdParseTable ( 149a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 150a9f12690SJung-uk Kim ACPI_OWNER_ID *OwnerId, 151a9f12690SJung-uk Kim BOOLEAN LoadTable, 152a9f12690SJung-uk Kim BOOLEAN External); 153a9f12690SJung-uk Kim 154a9f12690SJung-uk Kim ACPI_STATUS 155a9f12690SJung-uk Kim AdDisplayTables ( 156a9f12690SJung-uk Kim char *Filename, 157a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table); 158a9f12690SJung-uk Kim 159a9f12690SJung-uk Kim ACPI_STATUS 160f556842eSJung-uk Kim AdDisplayStatistics ( 161f556842eSJung-uk Kim void); 162f556842eSJung-uk Kim 163a9f12690SJung-uk Kim 164a9f12690SJung-uk Kim /* 165a9f12690SJung-uk Kim * adwalk 166a9f12690SJung-uk Kim */ 167a9f12690SJung-uk Kim void 168a9f12690SJung-uk Kim AcpiDmCrossReferenceNamespace ( 169a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 170a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 171a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 172a9f12690SJung-uk Kim 173a9f12690SJung-uk Kim void 174a9f12690SJung-uk Kim AcpiDmDumpTree ( 175a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 176a9f12690SJung-uk Kim 177a9f12690SJung-uk Kim void 178a9f12690SJung-uk Kim AcpiDmFindOrphanMethods ( 179a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 180a9f12690SJung-uk Kim 181a9f12690SJung-uk Kim void 182a9f12690SJung-uk Kim AcpiDmFinishNamespaceLoad ( 183a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 184a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 185a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 186a9f12690SJung-uk Kim 187a9f12690SJung-uk Kim void 188a9f12690SJung-uk Kim AcpiDmConvertResourceIndexes ( 189a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 190a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot); 191a9f12690SJung-uk Kim 192f556842eSJung-uk Kim 193a9f12690SJung-uk Kim /* 194a9f12690SJung-uk Kim * adfile 195a9f12690SJung-uk Kim */ 196a9f12690SJung-uk Kim ACPI_STATUS 197a9f12690SJung-uk Kim AdInitialize ( 198a9f12690SJung-uk Kim void); 199a9f12690SJung-uk Kim 200a9f12690SJung-uk Kim char * 201a9f12690SJung-uk Kim FlGenerateFilename ( 202a9f12690SJung-uk Kim char *InputFilename, 203a9f12690SJung-uk Kim char *Suffix); 204a9f12690SJung-uk Kim 205a9f12690SJung-uk Kim ACPI_STATUS 206a9f12690SJung-uk Kim FlSplitInputPathname ( 207a9f12690SJung-uk Kim char *InputPath, 208a9f12690SJung-uk Kim char **OutDirectoryPath, 209a9f12690SJung-uk Kim char **OutFilename); 210a9f12690SJung-uk Kim 211a9f12690SJung-uk Kim char * 212a9f12690SJung-uk Kim AdGenerateFilename ( 213a9f12690SJung-uk Kim char *Prefix, 214a9f12690SJung-uk Kim char *TableId); 215a9f12690SJung-uk Kim 216a9f12690SJung-uk Kim void 217a9f12690SJung-uk Kim AdWriteTable ( 218a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 219a9f12690SJung-uk Kim UINT32 Length, 220a9f12690SJung-uk Kim char *TableName, 221a9f12690SJung-uk Kim char *OemTableId); 222*a9d8d09cSJung-uk Kim #endif 223a9f12690SJung-uk Kim 224a9f12690SJung-uk Kim #endif /* _ACAPPS */ 225