acapps.h revision 278970
156893Sfenner/******************************************************************************
256893Sfenner *
356893Sfenner * Module Name: acapps - common include for ACPI applications/tools
456893Sfenner *
556893Sfenner *****************************************************************************/
656893Sfenner
756893Sfenner/*
856893Sfenner * Copyright (C) 2000 - 2015, Intel Corp.
956893Sfenner * All rights reserved.
1056893Sfenner *
1156893Sfenner * Redistribution and use in source and binary forms, with or without
1256893Sfenner * modification, are permitted provided that the following conditions
1356893Sfenner * are met:
1456893Sfenner * 1. Redistributions of source code must retain the above copyright
1556893Sfenner *    notice, this list of conditions, and the following disclaimer,
1656893Sfenner *    without modification.
1756893Sfenner * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1856893Sfenner *    substantially similar to the "NO WARRANTY" disclaimer below
1956893Sfenner *    ("Disclaimer") and any redistribution must be conditioned upon
2056893Sfenner *    including a substantially similar Disclaimer requirement for further
2175115Sfenner *    binary redistribution.
2256893Sfenner * 3. Neither the names of the above-listed copyright holders nor the names
2356893Sfenner *    of any contributors may be used to endorse or promote products derived
2456893Sfenner *    from this software without specific prior written permission.
25127668Sbms *
26147899Ssam * Alternatively, this software may be distributed under the terms of the
2756893Sfenner * GNU General Public License ("GPL") version 2 as published by the Free
2856893Sfenner * Software Foundation.
2956893Sfenner *
3056893Sfenner * NO WARRANTY
3156893Sfenner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3256893Sfenner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33127668Sbms * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34127668Sbms * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3556893Sfenner * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3656893Sfenner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3756893Sfenner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3856893Sfenner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39111726Sfenner * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4056893Sfenner * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4156893Sfenner * POSSIBILITY OF SUCH DAMAGES.
4256893Sfenner */
4356893Sfenner
4456893Sfenner#ifndef _ACAPPS
4556893Sfenner#define _ACAPPS
4656893Sfenner
4756893Sfenner
4856893Sfenner#ifdef _MSC_VER                 /* disable some level-4 warnings */
4956893Sfenner#pragma warning(disable:4100)   /* warning C4100: unreferenced formal parameter */
5056893Sfenner#endif
5198524Sfenner
5298524Sfenner/* Common info for tool signons */
5398524Sfenner
5498524Sfenner#define ACPICA_NAME                 "Intel ACPI Component Architecture"
5598524Sfenner#define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2015 Intel Corporation"
5698524Sfenner
5798524Sfenner#if ACPI_MACHINE_WIDTH == 64
5898524Sfenner#define ACPI_WIDTH          "-64"
5998524Sfenner
6098524Sfenner#elif ACPI_MACHINE_WIDTH == 32
6198524Sfenner#define ACPI_WIDTH          "-32"
6298524Sfenner
6398524Sfenner#else
6498524Sfenner#error unknown ACPI_MACHINE_WIDTH
6598524Sfenner#define ACPI_WIDTH          "-??"
6698524Sfenner
6798524Sfenner#endif
6898524Sfenner
6998524Sfenner/* Macros for signons and file headers */
7098524Sfenner
7198524Sfenner#define ACPI_COMMON_SIGNON(UtilityName) \
7298524Sfenner    "\n%s\n%s version %8.8X%s\n%s\n\n", \
7398524Sfenner    ACPICA_NAME, \
7498524Sfenner    UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \
7598524Sfenner    ACPICA_COPYRIGHT
7698524Sfenner
7798524Sfenner#define ACPI_COMMON_HEADER(UtilityName, Prefix) \
7898524Sfenner    "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \
7998524Sfenner    Prefix, ACPICA_NAME, \
8098524Sfenner    Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \
8198524Sfenner    Prefix, ACPICA_COPYRIGHT, \
8256893Sfenner    Prefix
8356893Sfenner
8498524Sfenner/* Macros for usage messages */
8598524Sfenner
8698524Sfenner#define ACPI_USAGE_HEADER(Usage) \
8798524Sfenner    AcpiOsPrintf ("Usage: %s\nOptions:\n", Usage);
8898524Sfenner
8998524Sfenner#define ACPI_USAGE_TEXT(Description) \
9098524Sfenner    AcpiOsPrintf (Description);
9198524Sfenner
9298524Sfenner#define ACPI_OPTION(Name, Description) \
9398524Sfenner    AcpiOsPrintf ("  %-18s%s\n", Name, Description);
9498524Sfenner
9598524Sfenner
9698524Sfenner#define FILE_SUFFIX_DISASSEMBLY     "dsl"
9798524Sfenner#define ACPI_TABLE_FILE_SUFFIX      ".dat"
9898524Sfenner
9998524Sfenner
10098524Sfenner/*
10198524Sfenner * getopt
10298524Sfenner */
10398524Sfennerint
10498524SfennerAcpiGetopt(
10598524Sfenner    int                     argc,
10698524Sfenner    char                    **argv,
10798524Sfenner    char                    *opts);
10898524Sfenner
10998524Sfennerint
11098524SfennerAcpiGetoptArgument (
11198524Sfenner    int                     argc,
11298524Sfenner    char                    **argv);
11398524Sfenner
11498524Sfennerextern int                  AcpiGbl_Optind;
11598524Sfennerextern int                  AcpiGbl_Opterr;
11698524Sfennerextern int                  AcpiGbl_SubOptChar;
11798524Sfennerextern char                 *AcpiGbl_Optarg;
11898524Sfenner
11998524Sfenner
12098524Sfenner/*
12198524Sfenner * cmfsize - Common get file size function
12298524Sfenner */
12398524SfennerUINT32
12498524SfennerCmGetFileSize (
12556893Sfenner    ACPI_FILE               File);
12698524Sfenner
12798524Sfenner
12898524Sfenner#ifndef ACPI_DUMP_APP
12998524Sfenner/*
13098524Sfenner * adisasm
13198524Sfenner */
13298524SfennerACPI_STATUS
13398524SfennerAdAmlDisassemble (
13498524Sfenner    BOOLEAN                 OutToFile,
13598524Sfenner    char                    *Filename,
13698524Sfenner    char                    *Prefix,
13798524Sfenner    char                    **OutFilename);
13898524Sfenner
13998524Sfennervoid
14098524SfennerAdPrintStatistics (
14198524Sfenner    void);
14298524Sfenner
14398524SfennerACPI_STATUS
14498524SfennerAdFindDsdt(
14598524Sfenner    UINT8                   **DsdtPtr,
14698524Sfenner    UINT32                  *DsdtLength);
147127668Sbms
14898524Sfennervoid
14998524SfennerAdDumpTables (
15098524Sfenner    void);
15198524Sfenner
15298524SfennerACPI_STATUS
15398524SfennerAdGetLocalTables (
154127668Sbms    void);
155127668Sbms
156127668SbmsACPI_STATUS
15798524SfennerAdParseTable (
158127668Sbms    ACPI_TABLE_HEADER       *Table,
15998524Sfenner    ACPI_OWNER_ID           *OwnerId,
16098524Sfenner    BOOLEAN                 LoadTable,
16198524Sfenner    BOOLEAN                 External);
162127668Sbms
163127668SbmsACPI_STATUS
16498524SfennerAdDisplayTables (
165127668Sbms    char                    *Filename,
166127668Sbms    ACPI_TABLE_HEADER       *Table);
167127668Sbms
16898524SfennerACPI_STATUS
16956893SfennerAdDisplayStatistics (
17056893Sfenner    void);
17198524Sfenner
17298524Sfenner
17398524Sfenner/*
17498524Sfenner * adwalk
17598524Sfenner */
17698524Sfennervoid
17798524SfennerAcpiDmCrossReferenceNamespace (
17898524Sfenner    ACPI_PARSE_OBJECT       *ParseTreeRoot,
17998524Sfenner    ACPI_NAMESPACE_NODE     *NamespaceRoot,
18098524Sfenner    ACPI_OWNER_ID           OwnerId);
18198524Sfenner
18298524Sfennervoid
18398524SfennerAcpiDmDumpTree (
18498524Sfenner    ACPI_PARSE_OBJECT       *Origin);
18598524Sfenner
18698524Sfennervoid
18798524SfennerAcpiDmFindOrphanMethods (
18898524Sfenner    ACPI_PARSE_OBJECT       *Origin);
18998524Sfenner
19098524Sfennervoid
19198524SfennerAcpiDmFinishNamespaceLoad (
19256893Sfenner    ACPI_PARSE_OBJECT       *ParseTreeRoot,
19356893Sfenner    ACPI_NAMESPACE_NODE     *NamespaceRoot,
19456893Sfenner    ACPI_OWNER_ID           OwnerId);
19556893Sfenner
19656893Sfennervoid
19756893SfennerAcpiDmConvertResourceIndexes (
19856893Sfenner    ACPI_PARSE_OBJECT       *ParseTreeRoot,
19956893Sfenner    ACPI_NAMESPACE_NODE     *NamespaceRoot);
20056893Sfenner
20156893Sfenner
20256893Sfenner/*
20356893Sfenner * adfile
20456893Sfenner */
20556893SfennerACPI_STATUS
20656893SfennerAdInitialize (
20756893Sfenner    void);
20856893Sfenner
20956893Sfennerchar *
21056893SfennerFlGenerateFilename (
21156893Sfenner    char                    *InputFilename,
21256893Sfenner    char                    *Suffix);
21356893Sfenner
21456893SfennerACPI_STATUS
21556893SfennerFlSplitInputPathname (
21656893Sfenner    char                    *InputPath,
21756893Sfenner    char                    **OutDirectoryPath,
21856893Sfenner    char                    **OutFilename);
21956893Sfenner
22056893Sfennerchar *
22156893SfennerAdGenerateFilename (
22256893Sfenner    char                    *Prefix,
22356893Sfenner    char                    *TableId);
22456893Sfenner
22556893Sfennervoid
22656893SfennerAdWriteTable (
22756893Sfenner    ACPI_TABLE_HEADER       *Table,
22856893Sfenner    UINT32                  Length,
22956893Sfenner    char                    *TableName,
23056893Sfenner    char                    *OemTableId);
23156893Sfenner#endif
23256893Sfenner
23356893Sfenner#endif /* _ACAPPS */
23456893Sfenner