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 a613ac2613c3..8b0e0220aa01 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)); -} | 
