1102550Siwasaki/****************************************************************************** 2102550Siwasaki * 3102550Siwasaki * Module Name: acapps - common include for ACPI applications/tools 4102550Siwasaki * 5102550Siwasaki *****************************************************************************/ 6102550Siwasaki 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp. 9102550Siwasaki * All rights reserved. 10102550Siwasaki * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 25102550Siwasaki * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 29102550Siwasaki * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 43102550Siwasaki 44102550Siwasaki#ifndef _ACAPPS 45102550Siwasaki#define _ACAPPS 46102550Siwasaki 47306536Sjkim#include <stdio.h> 48102550Siwasaki 49102550Siwasaki#ifdef _MSC_VER /* disable some level-4 warnings */ 50102550Siwasaki#pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ 51102550Siwasaki#endif 52102550Siwasaki 53213806Sjkim/* Common info for tool signons */ 54213806Sjkim 55213806Sjkim#define ACPICA_NAME "Intel ACPI Component Architecture" 56306536Sjkim#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2016 Intel Corporation" 57213806Sjkim 58213806Sjkim#if ACPI_MACHINE_WIDTH == 64 59213806Sjkim#define ACPI_WIDTH "-64" 60213806Sjkim 61213806Sjkim#elif ACPI_MACHINE_WIDTH == 32 62213806Sjkim#define ACPI_WIDTH "-32" 63213806Sjkim 64213806Sjkim#else 65213806Sjkim#error unknown ACPI_MACHINE_WIDTH 66213806Sjkim#define ACPI_WIDTH "-??" 67213806Sjkim 68213806Sjkim#endif 69213806Sjkim 70213806Sjkim/* Macros for signons and file headers */ 71213806Sjkim 72213806Sjkim#define ACPI_COMMON_SIGNON(UtilityName) \ 73213806Sjkim "\n%s\n%s version %8.8X%s\n%s\n\n", \ 74213806Sjkim ACPICA_NAME, \ 75213806Sjkim UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 76213806Sjkim ACPICA_COPYRIGHT 77213806Sjkim 78213806Sjkim#define ACPI_COMMON_HEADER(UtilityName, Prefix) \ 79213806Sjkim "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \ 80213806Sjkim Prefix, ACPICA_NAME, \ 81213806Sjkim Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 82213806Sjkim Prefix, ACPICA_COPYRIGHT, \ 83213806Sjkim Prefix 84213806Sjkim 85228110Sjkim/* Macros for usage messages */ 86228110Sjkim 87228110Sjkim#define ACPI_USAGE_HEADER(Usage) \ 88281075Sdim AcpiOsPrintf ("Usage: %s\nOptions:\n", Usage); 89228110Sjkim 90281075Sdim#define ACPI_USAGE_TEXT(Description) \ 91281075Sdim AcpiOsPrintf (Description); 92281075Sdim 93228110Sjkim#define ACPI_OPTION(Name, Description) \ 94306536Sjkim AcpiOsPrintf (" %-20s%s\n", Name, Description); 95228110Sjkim 96228110Sjkim 97306536Sjkim/* Check for unexpected exceptions */ 98306536Sjkim 99306536Sjkim#define ACPI_CHECK_STATUS(Name, Status, Expected) \ 100306536Sjkim if (Status != Expected) \ 101306536Sjkim { \ 102306536Sjkim AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ 103306536Sjkim AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ 104306536Sjkim } 105306536Sjkim 106306536Sjkim/* Check for unexpected non-AE_OK errors */ 107306536Sjkim 108306536Sjkim 109306536Sjkim#define ACPI_CHECK_OK(Name, Status) ACPI_CHECK_STATUS (Name, Status, AE_OK); 110306536Sjkim 111167802Sjkim#define FILE_SUFFIX_DISASSEMBLY "dsl" 112306536Sjkim#define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ 113167802Sjkim 114102550Siwasaki 115306536Sjkim/* acfileio */ 116306536Sjkim 117306536SjkimACPI_STATUS 118306536SjkimAcGetAllTablesFromFile ( 119306536Sjkim char *Filename, 120306536Sjkim UINT8 GetOnlyAmlTables, 121306536Sjkim ACPI_NEW_TABLE_DESC **ReturnListHead); 122306536Sjkim 123306536SjkimBOOLEAN 124306536SjkimAcIsFileBinary ( 125306536Sjkim FILE *File); 126306536Sjkim 127306536SjkimACPI_STATUS 128306536SjkimAcValidateTableHeader ( 129306536Sjkim FILE *File, 130306536Sjkim long TableOffset); 131306536Sjkim 132306536Sjkim 133306536Sjkim/* Values for GetOnlyAmlTables */ 134306536Sjkim 135306536Sjkim#define ACPI_GET_ONLY_AML_TABLES TRUE 136306536Sjkim#define ACPI_GET_ALL_TABLES FALSE 137306536Sjkim 138306536Sjkim 139198237Sjkim/* 140198237Sjkim * getopt 141198237Sjkim */ 142102550Siwasakiint 143102550SiwasakiAcpiGetopt( 144114237Snjl int argc, 145114237Snjl char **argv, 146102550Siwasaki char *opts); 147102550Siwasaki 148250838Sjkimint 149250838SjkimAcpiGetoptArgument ( 150250838Sjkim int argc, 151250838Sjkim char **argv); 152250838Sjkim 153198237Sjkimextern int AcpiGbl_Optind; 154202771Sjkimextern int AcpiGbl_Opterr; 155250838Sjkimextern int AcpiGbl_SubOptChar; 156198237Sjkimextern char *AcpiGbl_Optarg; 157198237Sjkim 158198237Sjkim 159281075Sdim/* 160281075Sdim * cmfsize - Common get file size function 161281075Sdim */ 162281075SdimUINT32 163281075SdimCmGetFileSize ( 164281075Sdim ACPI_FILE File); 165281075Sdim 166281075Sdim 167167802Sjkim/* 168167802Sjkim * adwalk 169167802Sjkim */ 170167802Sjkimvoid 171167802SjkimAcpiDmCrossReferenceNamespace ( 172167802Sjkim ACPI_PARSE_OBJECT *ParseTreeRoot, 173193267Sjkim ACPI_NAMESPACE_NODE *NamespaceRoot, 174193267Sjkim ACPI_OWNER_ID OwnerId); 175102550Siwasaki 176167802Sjkimvoid 177167802SjkimAcpiDmDumpTree ( 178167802Sjkim ACPI_PARSE_OBJECT *Origin); 179167802Sjkim 180167802Sjkimvoid 181167802SjkimAcpiDmFindOrphanMethods ( 182167802Sjkim ACPI_PARSE_OBJECT *Origin); 183167802Sjkim 184167802Sjkimvoid 185167802SjkimAcpiDmFinishNamespaceLoad ( 186167802Sjkim ACPI_PARSE_OBJECT *ParseTreeRoot, 187193267Sjkim ACPI_NAMESPACE_NODE *NamespaceRoot, 188193267Sjkim ACPI_OWNER_ID OwnerId); 189167802Sjkim 190167802Sjkimvoid 191167802SjkimAcpiDmConvertResourceIndexes ( 192167802Sjkim ACPI_PARSE_OBJECT *ParseTreeRoot, 193167802Sjkim ACPI_NAMESPACE_NODE *NamespaceRoot); 194167802Sjkim 195198237Sjkim 196167802Sjkim/* 197167802Sjkim * adfile 198167802Sjkim */ 199167802SjkimACPI_STATUS 200167802SjkimAdInitialize ( 201167802Sjkim void); 202167802Sjkim 203167802Sjkimchar * 204167802SjkimFlGenerateFilename ( 205167802Sjkim char *InputFilename, 206167802Sjkim char *Suffix); 207167802Sjkim 208167802SjkimACPI_STATUS 209167802SjkimFlSplitInputPathname ( 210167802Sjkim char *InputPath, 211167802Sjkim char **OutDirectoryPath, 212167802Sjkim char **OutFilename); 213167802Sjkim 214167802Sjkimchar * 215167802SjkimAdGenerateFilename ( 216167802Sjkim char *Prefix, 217167802Sjkim char *TableId); 218167802Sjkim 219167802Sjkimvoid 220167802SjkimAdWriteTable ( 221167802Sjkim ACPI_TABLE_HEADER *Table, 222167802Sjkim UINT32 Length, 223167802Sjkim char *TableName, 224167802Sjkim char *OemTableId); 225167802Sjkim 226102550Siwasaki#endif /* _ACAPPS */ 227