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 /* 8f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, 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 47*493deb39SJung-uk Kim #ifdef ACPI_USE_STANDARD_HEADERS 48*493deb39SJung-uk Kim #include <sys/stat.h> 49*493deb39SJung-uk Kim #endif /* ACPI_USE_STANDARD_HEADERS */ 50a9f12690SJung-uk Kim 513c1812acSJung-uk Kim /* Common info for tool signons */ 523c1812acSJung-uk Kim 533c1812acSJung-uk Kim #define ACPICA_NAME "Intel ACPI Component Architecture" 54f8146b88SJung-uk Kim #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2016 Intel Corporation" 553c1812acSJung-uk Kim 563c1812acSJung-uk Kim #if ACPI_MACHINE_WIDTH == 64 573c1812acSJung-uk Kim #define ACPI_WIDTH "-64" 583c1812acSJung-uk Kim 593c1812acSJung-uk Kim #elif ACPI_MACHINE_WIDTH == 32 603c1812acSJung-uk Kim #define ACPI_WIDTH "-32" 613c1812acSJung-uk Kim 623c1812acSJung-uk Kim #else 633c1812acSJung-uk Kim #error unknown ACPI_MACHINE_WIDTH 643c1812acSJung-uk Kim #define ACPI_WIDTH "-??" 653c1812acSJung-uk Kim 663c1812acSJung-uk Kim #endif 673c1812acSJung-uk Kim 683c1812acSJung-uk Kim /* Macros for signons and file headers */ 693c1812acSJung-uk Kim 703c1812acSJung-uk Kim #define ACPI_COMMON_SIGNON(UtilityName) \ 713c1812acSJung-uk Kim "\n%s\n%s version %8.8X%s\n%s\n\n", \ 723c1812acSJung-uk Kim ACPICA_NAME, \ 733c1812acSJung-uk Kim UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 743c1812acSJung-uk Kim ACPICA_COPYRIGHT 753c1812acSJung-uk Kim 763c1812acSJung-uk Kim #define ACPI_COMMON_HEADER(UtilityName, Prefix) \ 773c1812acSJung-uk Kim "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \ 783c1812acSJung-uk Kim Prefix, ACPICA_NAME, \ 793c1812acSJung-uk Kim Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 803c1812acSJung-uk Kim Prefix, ACPICA_COPYRIGHT, \ 813c1812acSJung-uk Kim Prefix 823c1812acSJung-uk Kim 833f0275a0SJung-uk Kim /* Macros for usage messages */ 843f0275a0SJung-uk Kim 853f0275a0SJung-uk Kim #define ACPI_USAGE_HEADER(Usage) \ 86*493deb39SJung-uk Kim printf ("Usage: %s\nOptions:\n", Usage); 87313a0c13SJung-uk Kim 88313a0c13SJung-uk Kim #define ACPI_USAGE_TEXT(Description) \ 89*493deb39SJung-uk Kim printf (Description); 903f0275a0SJung-uk Kim 913f0275a0SJung-uk Kim #define ACPI_OPTION(Name, Description) \ 92*493deb39SJung-uk Kim printf (" %-20s%s\n", Name, Description); 933f0275a0SJung-uk Kim 943f0275a0SJung-uk Kim 95f8146b88SJung-uk Kim /* Check for unexpected exceptions */ 96f8146b88SJung-uk Kim 97f8146b88SJung-uk Kim #define ACPI_CHECK_STATUS(Name, Status, Expected) \ 98f8146b88SJung-uk Kim if (Status != Expected) \ 99f8146b88SJung-uk Kim { \ 100f8146b88SJung-uk Kim AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ 101f8146b88SJung-uk Kim AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ 102f8146b88SJung-uk Kim } 103f8146b88SJung-uk Kim 104f8146b88SJung-uk Kim /* Check for unexpected non-AE_OK errors */ 105f8146b88SJung-uk Kim 106f8146b88SJung-uk Kim 107f8146b88SJung-uk Kim #define ACPI_CHECK_OK(Name, Status) ACPI_CHECK_STATUS (Name, Status, AE_OK); 108f8146b88SJung-uk Kim 109a9f12690SJung-uk Kim #define FILE_SUFFIX_DISASSEMBLY "dsl" 110f8146b88SJung-uk Kim #define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ 111f8146b88SJung-uk Kim 112f8146b88SJung-uk Kim 113f8146b88SJung-uk Kim /* acfileio */ 114f8146b88SJung-uk Kim 115f8146b88SJung-uk Kim ACPI_STATUS 116f8146b88SJung-uk Kim AcGetAllTablesFromFile ( 117f8146b88SJung-uk Kim char *Filename, 118f8146b88SJung-uk Kim UINT8 GetOnlyAmlTables, 119f8146b88SJung-uk Kim ACPI_NEW_TABLE_DESC **ReturnListHead); 120f8146b88SJung-uk Kim 121f8146b88SJung-uk Kim BOOLEAN 122f8146b88SJung-uk Kim AcIsFileBinary ( 123f8146b88SJung-uk Kim FILE *File); 124f8146b88SJung-uk Kim 125f8146b88SJung-uk Kim ACPI_STATUS 126f8146b88SJung-uk Kim AcValidateTableHeader ( 127f8146b88SJung-uk Kim FILE *File, 128f8146b88SJung-uk Kim long TableOffset); 129f8146b88SJung-uk Kim 130f8146b88SJung-uk Kim 131f8146b88SJung-uk Kim /* Values for GetOnlyAmlTables */ 132f8146b88SJung-uk Kim 133f8146b88SJung-uk Kim #define ACPI_GET_ONLY_AML_TABLES TRUE 134f8146b88SJung-uk Kim #define ACPI_GET_ALL_TABLES FALSE 135a9f12690SJung-uk Kim 136a9f12690SJung-uk Kim 137f556842eSJung-uk Kim /* 138f556842eSJung-uk Kim * getopt 139f556842eSJung-uk Kim */ 140a9f12690SJung-uk Kim int 141a9f12690SJung-uk Kim AcpiGetopt( 142a9f12690SJung-uk Kim int argc, 143a9f12690SJung-uk Kim char **argv, 144a9f12690SJung-uk Kim char *opts); 145a9f12690SJung-uk Kim 146a9d8d09cSJung-uk Kim int 147a9d8d09cSJung-uk Kim AcpiGetoptArgument ( 148a9d8d09cSJung-uk Kim int argc, 149a9d8d09cSJung-uk Kim char **argv); 150a9d8d09cSJung-uk Kim 151f556842eSJung-uk Kim extern int AcpiGbl_Optind; 1529a179dd8SJung-uk Kim extern int AcpiGbl_Opterr; 153a9d8d09cSJung-uk Kim extern int AcpiGbl_SubOptChar; 154f556842eSJung-uk Kim extern char *AcpiGbl_Optarg; 155f556842eSJung-uk Kim 156f556842eSJung-uk Kim 157313a0c13SJung-uk Kim /* 158313a0c13SJung-uk Kim * cmfsize - Common get file size function 159313a0c13SJung-uk Kim */ 160313a0c13SJung-uk Kim UINT32 161313a0c13SJung-uk Kim CmGetFileSize ( 162313a0c13SJung-uk Kim ACPI_FILE File); 163313a0c13SJung-uk Kim 164313a0c13SJung-uk Kim 165a9f12690SJung-uk Kim /* 166a9f12690SJung-uk Kim * adwalk 167a9f12690SJung-uk Kim */ 168a9f12690SJung-uk Kim void 169a9f12690SJung-uk Kim AcpiDmCrossReferenceNamespace ( 170a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 171a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 172a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 173a9f12690SJung-uk Kim 174a9f12690SJung-uk Kim void 175a9f12690SJung-uk Kim AcpiDmDumpTree ( 176a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 177a9f12690SJung-uk Kim 178a9f12690SJung-uk Kim void 179a9f12690SJung-uk Kim AcpiDmFindOrphanMethods ( 180a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 181a9f12690SJung-uk Kim 182a9f12690SJung-uk Kim void 183a9f12690SJung-uk Kim AcpiDmFinishNamespaceLoad ( 184a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 185a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 186a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 187a9f12690SJung-uk Kim 188a9f12690SJung-uk Kim void 189a9f12690SJung-uk Kim AcpiDmConvertResourceIndexes ( 190a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 191a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot); 192a9f12690SJung-uk Kim 193f556842eSJung-uk Kim 194a9f12690SJung-uk Kim /* 195a9f12690SJung-uk Kim * adfile 196a9f12690SJung-uk Kim */ 197a9f12690SJung-uk Kim ACPI_STATUS 198a9f12690SJung-uk Kim AdInitialize ( 199a9f12690SJung-uk Kim void); 200a9f12690SJung-uk Kim 201a9f12690SJung-uk Kim char * 202a9f12690SJung-uk Kim FlGenerateFilename ( 203a9f12690SJung-uk Kim char *InputFilename, 204a9f12690SJung-uk Kim char *Suffix); 205a9f12690SJung-uk Kim 206a9f12690SJung-uk Kim ACPI_STATUS 207a9f12690SJung-uk Kim FlSplitInputPathname ( 208a9f12690SJung-uk Kim char *InputPath, 209a9f12690SJung-uk Kim char **OutDirectoryPath, 210a9f12690SJung-uk Kim char **OutFilename); 211a9f12690SJung-uk Kim 212a9f12690SJung-uk Kim char * 213a9f12690SJung-uk Kim AdGenerateFilename ( 214a9f12690SJung-uk Kim char *Prefix, 215a9f12690SJung-uk Kim char *TableId); 216a9f12690SJung-uk Kim 217a9f12690SJung-uk Kim void 218a9f12690SJung-uk Kim AdWriteTable ( 219a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 220a9f12690SJung-uk Kim UINT32 Length, 221a9f12690SJung-uk Kim char *TableName, 222a9f12690SJung-uk Kim char *OemTableId); 223a9f12690SJung-uk Kim 224a9f12690SJung-uk Kim #endif /* _ACAPPS */ 225