diff options
Diffstat (limited to 'source/tools/acpinames/anmain.c')
-rw-r--r-- | source/tools/acpinames/anmain.c | 256 |
1 files changed, 115 insertions, 141 deletions
diff --git a/source/tools/acpinames/anmain.c b/source/tools/acpinames/anmain.c index a613ac2613c36..8b0e0220aa018 100644 --- a/source/tools/acpinames/anmain.c +++ b/source/tools/acpinames/anmain.c @@ -43,6 +43,7 @@ #include "acpinames.h" #include "actables.h" +#include "errno.h" #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("anmain") @@ -51,8 +52,9 @@ /* Local prototypes */ static int -NsDumpEntireNamespace ( - UINT32 TableCount); +AnDumpEntireNamespace ( + ACPI_NEW_TABLE_DESC *ListHead); + /* * Main routine for the ACPI user-space namespace utility. @@ -65,8 +67,7 @@ NsDumpEntireNamespace ( * Windows: The setargv.obj module must be linked in to automatically * expand wildcards. */ -static AE_TABLE_DESC *AeTableListHead = NULL; -BOOLEAN AcpiGbl_NsLoadOnly = FALSE; +BOOLEAN AcpiGbl_NsLoadOnly = FALSE; #define AN_UTILITY_NAME "ACPI Namespace Dump Utility" @@ -100,7 +101,103 @@ usage ( /****************************************************************************** * - * FUNCTION: NsDumpEntireNamespace + * FUNCTION: main + * + * PARAMETERS: argc, argv + * + * RETURN: Status (pass/fail) + * + * DESCRIPTION: Main routine for NsDump utility + * + *****************************************************************************/ + +int ACPI_SYSTEM_XFACE +main ( + int argc, + char **argv) +{ + ACPI_NEW_TABLE_DESC *ListHead = NULL; + ACPI_STATUS Status; + int j; + + + ACPI_DEBUG_INITIALIZE (); /* For debug version only */ + + /* Init debug globals and ACPICA */ + + AcpiDbgLevel = ACPI_NORMAL_DEFAULT | ACPI_LV_TABLES; + AcpiDbgLayer = 0xFFFFFFFF; + + Status = AcpiInitializeSubsystem (); + ACPI_CHECK_OK (AcpiInitializeSubsystem, Status); + if (ACPI_FAILURE (Status)) + { + return (-1); + } + + printf (ACPI_COMMON_SIGNON (AN_UTILITY_NAME)); + if (argc < 2) + { + usage (); + return (0); + } + + /* Get the command line options */ + + while ((j = AcpiGetopt (argc, argv, AN_SUPPORTED_OPTIONS)) != ACPI_OPT_END) switch(j) + { + case 'l': + + AcpiGbl_NsLoadOnly = TRUE; + break; + + case 'v': /* -v: (Version): signon already emitted, just exit */ + + return (0); + + case 'x': + + AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 0); + printf ("Debug Level: 0x%8.8X\n", AcpiDbgLevel); + break; + + case '?': + case 'h': + default: + + usage(); + return (0); + } + + /* Get each of the ACPI table files on the command line */ + + while (argv[AcpiGbl_Optind]) + { + /* Get all ACPI AML tables in this file */ + + Status = AcpiAcGetAllTablesFromFile (argv[AcpiGbl_Optind], + ACPI_GET_ONLY_AML_TABLES, &ListHead); + if (ACPI_FAILURE (Status)) + { + return (-1); + } + + AcpiGbl_Optind++; + } + + printf ("\n"); + + /* + * The next argument is the filename for the DSDT or SSDT. + * Open the file, build namespace and dump it. + */ + return (AnDumpEntireNamespace (ListHead)); +} + + +/****************************************************************************** + * + * FUNCTION: AnDumpEntireNamespace * * PARAMETERS: AmlFilename - Filename for DSDT or SSDT AML table * @@ -112,8 +209,8 @@ usage ( *****************************************************************************/ static int -NsDumpEntireNamespace ( - UINT32 TableCount) +AnDumpEntireNamespace ( + ACPI_NEW_TABLE_DESC *ListHead) { ACPI_STATUS Status; ACPI_HANDLE Handle; @@ -123,7 +220,7 @@ NsDumpEntireNamespace ( * Build a local XSDT with all tables. Normally, here is where the * RSDP search is performed to find the ACPI tables */ - Status = AeBuildLocalTables (TableCount, AeTableListHead); + Status = AnBuildLocalTables (ListHead); if (ACPI_FAILURE (Status)) { return (-1); @@ -168,10 +265,10 @@ NsDumpEntireNamespace ( * hardware or event manager code underneath. */ Status = AcpiEnableSubsystem ( - ACPI_NO_ACPI_ENABLE | - ACPI_NO_ADDRESS_SPACE_INIT | - ACPI_NO_EVENT_INIT | - ACPI_NO_HANDLER_INIT); + ACPI_NO_ACPI_ENABLE | + ACPI_NO_ADDRESS_SPACE_INIT | + ACPI_NO_EVENT_INIT | + ACPI_NO_HANDLER_INIT); if (ACPI_FAILURE (Status)) { printf ("**** Could not EnableSubsystem, %s\n", @@ -180,9 +277,9 @@ NsDumpEntireNamespace ( } Status = AcpiInitializeObjects ( - ACPI_NO_ADDRESS_SPACE_INIT | - ACPI_NO_DEVICE_INIT | - ACPI_NO_EVENT_INIT); + ACPI_NO_ADDRESS_SPACE_INIT | + ACPI_NO_DEVICE_INIT | + ACPI_NO_EVENT_INIT); if (ACPI_FAILURE (Status)) { printf ("**** Could not InitializeObjects, %s\n", @@ -195,137 +292,14 @@ NsDumpEntireNamespace ( */ AcpiOsPrintf ("\nACPI Namespace:\n"); - AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, ACPI_UINT32_MAX, - ACPI_OWNER_ID_MAX, AcpiGbl_RootNode); + AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, + ACPI_UINT32_MAX, ACPI_OWNER_ID_MAX, AcpiGbl_RootNode); /* Example: get a handle to the _GPE scope */ Status = AcpiGetHandle (NULL, "\\_GPE", &Handle); - AE_CHECK_OK (AcpiGetHandle, Status); + ACPI_CHECK_OK (AcpiGetHandle, Status); return (0); } - - -/****************************************************************************** - * - * FUNCTION: main - * - * PARAMETERS: argc, argv - * - * RETURN: Status (pass/fail) - * - * DESCRIPTION: Main routine for NsDump utility - * - *****************************************************************************/ - -int ACPI_SYSTEM_XFACE -main ( - int argc, - char **argv) -{ - AE_TABLE_DESC *TableDesc; - ACPI_TABLE_HEADER *Table = NULL; - ACPI_STATUS Status; - UINT32 TableCount; - int j; - - - ACPI_DEBUG_INITIALIZE (); /* For debug version only */ - - /* Init debug globals and ACPICA */ - - AcpiDbgLevel = ACPI_NORMAL_DEFAULT | ACPI_LV_TABLES; - AcpiDbgLayer = 0xFFFFFFFF; - - Status = AcpiInitializeSubsystem (); - AE_CHECK_OK (AcpiInitializeSubsystem, Status); - if (ACPI_FAILURE (Status)) - { - return (-1); - } - - printf (ACPI_COMMON_SIGNON (AN_UTILITY_NAME)); - if (argc < 2) - { - usage (); - return (0); - } - - /* Get the command line options */ - - while ((j = AcpiGetopt (argc, argv, AN_SUPPORTED_OPTIONS)) != ACPI_OPT_END) switch(j) - { - case 'l': - - AcpiGbl_NsLoadOnly = TRUE; - break; - - case 'v': /* -v: (Version): signon already emitted, just exit */ - - return (0); - - case 'x': - - AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 0); - printf ("Debug Level: 0x%8.8X\n", AcpiDbgLevel); - break; - - case '?': - case 'h': - default: - - usage(); - return (0); - } - - TableCount = 0; - - /* Get each of the ACPI table files on the command line */ - - while (argv[AcpiGbl_Optind]) - { - /* Get one entire table */ - - Status = AcpiUtReadTableFromFile (argv[AcpiGbl_Optind], &Table); - if (ACPI_FAILURE (Status)) - { - fprintf (stderr, "**** Could not get table from file %s, %s\n", - argv[AcpiGbl_Optind], AcpiFormatException (Status)); - return (-1); - } - - /* Ignore non-AML tables, we can't use them. Except for an FADT */ - - if (!ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FADT) && - !AcpiUtIsAmlTable (Table)) - { - fprintf (stderr, " %s: [%4.4s] is not an AML table - ignoring\n", - argv[AcpiGbl_Optind], Table->Signature); - - AcpiOsFree (Table); - } - else - { - /* Allocate and link a table descriptor */ - - TableDesc = AcpiOsAllocate (sizeof (AE_TABLE_DESC)); - TableDesc->Table = Table; - TableDesc->Next = AeTableListHead; - AeTableListHead = TableDesc; - - TableCount++; - } - - AcpiGbl_Optind++; - } - - printf ("\n"); - - /* - * The next argument is the filename for the DSDT or SSDT. - * Open the file, build namespace and dump it. - */ - return (NsDumpEntireNamespace (TableCount)); -} |