dbfileio.c revision 298714
155682Smarkm/*******************************************************************************
255682Smarkm *
355682Smarkm * Module Name: dbfileio - Debugger file I/O commands. These can't usually
455682Smarkm *              be used when running the debugger in Ring 0 (Kernel mode)
555682Smarkm *
655682Smarkm ******************************************************************************/
755682Smarkm
855682Smarkm/*
955682Smarkm * Copyright (C) 2000 - 2016, Intel Corp.
1055682Smarkm * All rights reserved.
1155682Smarkm *
1255682Smarkm * Redistribution and use in source and binary forms, with or without
1355682Smarkm * modification, are permitted provided that the following conditions
1455682Smarkm * are met:
1555682Smarkm * 1. Redistributions of source code must retain the above copyright
1655682Smarkm *    notice, this list of conditions, and the following disclaimer,
1755682Smarkm *    without modification.
1855682Smarkm * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1955682Smarkm *    substantially similar to the "NO WARRANTY" disclaimer below
2055682Smarkm *    ("Disclaimer") and any redistribution must be conditioned upon
2155682Smarkm *    including a substantially similar Disclaimer requirement for further
2255682Smarkm *    binary redistribution.
2355682Smarkm * 3. Neither the names of the above-listed copyright holders nor the names
2455682Smarkm *    of any contributors may be used to endorse or promote products derived
2555682Smarkm *    from this software without specific prior written permission.
2655682Smarkm *
2755682Smarkm * Alternatively, this software may be distributed under the terms of the
2855682Smarkm * GNU General Public License ("GPL") version 2 as published by the Free
2955682Smarkm * Software Foundation.
3055682Smarkm *
3155682Smarkm * NO WARRANTY
3255682Smarkm * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3355682Smarkm * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3455682Smarkm * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
3555682Smarkm * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3655682Smarkm * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3755682Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3855682Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3955682Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
4055682Smarkm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
4155682Smarkm * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4255682Smarkm * POSSIBILITY OF SUCH DAMAGES.
4355682Smarkm */
4455682Smarkm
4555682Smarkm#include <contrib/dev/acpica/include/acpi.h>
4655682Smarkm#include <contrib/dev/acpica/include/accommon.h>
4755682Smarkm#include <contrib/dev/acpica/include/acdebug.h>
4855682Smarkm#include <contrib/dev/acpica/include/actables.h>
4955682Smarkm#include <stdio.h>
5055682Smarkm#ifdef ACPI_APPLICATION
5155682Smarkm#include <contrib/dev/acpica/include/acapps.h>
5255682Smarkm#endif
5355682Smarkm
5455682Smarkm#define _COMPONENT          ACPI_CA_DEBUGGER
5555682Smarkm        ACPI_MODULE_NAME    ("dbfileio")
5655682Smarkm
5755682Smarkm
5855682Smarkm#ifdef ACPI_DEBUGGER
5955682Smarkm/*******************************************************************************
6055682Smarkm *
6155682Smarkm * FUNCTION:    AcpiDbCloseDebugFile
6255682Smarkm *
6355682Smarkm * PARAMETERS:  None
6455682Smarkm *
6555682Smarkm * RETURN:      None
6655682Smarkm *
6755682Smarkm * DESCRIPTION: If open, close the current debug output file
6855682Smarkm *
6955682Smarkm ******************************************************************************/
7055682Smarkm
7155682Smarkmvoid
7255682SmarkmAcpiDbCloseDebugFile (
7355682Smarkm    void)
7455682Smarkm{
7555682Smarkm
7655682Smarkm#ifdef ACPI_APPLICATION
7755682Smarkm
7855682Smarkm    if (AcpiGbl_DebugFile)
7955682Smarkm    {
8055682Smarkm       fclose (AcpiGbl_DebugFile);
8155682Smarkm       AcpiGbl_DebugFile = NULL;
8255682Smarkm       AcpiGbl_DbOutputToFile = FALSE;
8355682Smarkm       AcpiOsPrintf ("Debug output file %s closed\n",
8455682Smarkm            AcpiGbl_DbDebugFilename);
8555682Smarkm    }
8655682Smarkm#endif
8755682Smarkm}
8855682Smarkm
8955682Smarkm
9055682Smarkm/*******************************************************************************
9155682Smarkm *
9255682Smarkm * FUNCTION:    AcpiDbOpenDebugFile
9355682Smarkm *
9455682Smarkm * PARAMETERS:  Name                - Filename to open
9555682Smarkm *
9655682Smarkm * RETURN:      None
9755682Smarkm *
9855682Smarkm * DESCRIPTION: Open a file where debug output will be directed.
9955682Smarkm *
10055682Smarkm ******************************************************************************/
10155682Smarkm
10255682Smarkmvoid
10355682SmarkmAcpiDbOpenDebugFile (
10455682Smarkm    char                    *Name)
10555682Smarkm{
10655682Smarkm
10755682Smarkm#ifdef ACPI_APPLICATION
10855682Smarkm
10955682Smarkm    AcpiDbCloseDebugFile ();
11055682Smarkm    AcpiGbl_DebugFile = fopen (Name, "w+");
11155682Smarkm    if (!AcpiGbl_DebugFile)
11255682Smarkm    {
11355682Smarkm        AcpiOsPrintf ("Could not open debug file %s\n", Name);
11455682Smarkm        return;
11555682Smarkm    }
11655682Smarkm
11755682Smarkm    AcpiOsPrintf ("Debug output file %s opened\n", Name);
11855682Smarkm    strncpy (AcpiGbl_DbDebugFilename, Name,
11955682Smarkm        sizeof (AcpiGbl_DbDebugFilename));
12055682Smarkm    AcpiGbl_DbOutputToFile = TRUE;
12155682Smarkm
12255682Smarkm#endif
12355682Smarkm}
12455682Smarkm#endif
12555682Smarkm
12655682Smarkm
12755682Smarkm/*******************************************************************************
12855682Smarkm *
12955682Smarkm * FUNCTION:    AcpiDbLoadTables
13055682Smarkm *
13155682Smarkm * PARAMETERS:  ListHead        - List of ACPI tables to load
13255682Smarkm *
13355682Smarkm * RETURN:      Status
13455682Smarkm *
13555682Smarkm * DESCRIPTION: Load ACPI tables from a previously constructed table list.
13655682Smarkm *
13755682Smarkm ******************************************************************************/
13855682Smarkm
13955682SmarkmACPI_STATUS
14055682SmarkmAcpiDbLoadTables (
14155682Smarkm    ACPI_NEW_TABLE_DESC     *ListHead)
14255682Smarkm{
14355682Smarkm    ACPI_STATUS             Status;
14455682Smarkm    ACPI_NEW_TABLE_DESC     *TableListHead;
14555682Smarkm    ACPI_TABLE_HEADER       *Table;
14655682Smarkm
14755682Smarkm
14855682Smarkm    /* Load all ACPI tables in the list */
14955682Smarkm
15055682Smarkm    TableListHead = ListHead;
15155682Smarkm    while (TableListHead)
15255682Smarkm    {
15355682Smarkm        Table = TableListHead->Table;
15455682Smarkm
15555682Smarkm        Status = AcpiLoadTable (Table);
15655682Smarkm        if (ACPI_FAILURE (Status))
15755682Smarkm        {
15855682Smarkm            if (Status == AE_ALREADY_EXISTS)
15955682Smarkm            {
16055682Smarkm                AcpiOsPrintf ("Table %4.4s is already installed\n",
16155682Smarkm                    Table->Signature);
16255682Smarkm            }
16355682Smarkm            else
16455682Smarkm            {
16555682Smarkm                AcpiOsPrintf ("Could not install table, %s\n",
16655682Smarkm                    AcpiFormatException (Status));
16755682Smarkm            }
16855682Smarkm
16955682Smarkm            return (Status);
17055682Smarkm        }
17155682Smarkm
17255682Smarkm        fprintf (stderr,
17355682Smarkm            "Acpi table [%4.4s] successfully installed and loaded\n",
17455682Smarkm            Table->Signature);
17555682Smarkm
17655682Smarkm        TableListHead = TableListHead->Next;
17755682Smarkm    }
17855682Smarkm
17955682Smarkm    return (AE_OK);
18055682Smarkm}
18155682Smarkm