1a159c266SJung-uk Kim /******************************************************************************* 2a159c266SJung-uk Kim * 3a159c266SJung-uk Kim * Module Name: dbfileio - Debugger file I/O commands. These can't usually 4a159c266SJung-uk Kim * be used when running the debugger in Ring 0 (Kernel mode) 5a159c266SJung-uk Kim * 6a159c266SJung-uk Kim ******************************************************************************/ 7a159c266SJung-uk Kim 8a159c266SJung-uk Kim /* 9*f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, Intel Corp. 10a159c266SJung-uk Kim * All rights reserved. 11a159c266SJung-uk Kim * 12a159c266SJung-uk Kim * Redistribution and use in source and binary forms, with or without 13a159c266SJung-uk Kim * modification, are permitted provided that the following conditions 14a159c266SJung-uk Kim * are met: 15a159c266SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 16a159c266SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 17a159c266SJung-uk Kim * without modification. 18a159c266SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19a159c266SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 20a159c266SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 21a159c266SJung-uk Kim * including a substantially similar Disclaimer requirement for further 22a159c266SJung-uk Kim * binary redistribution. 23a159c266SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 24a159c266SJung-uk Kim * of any contributors may be used to endorse or promote products derived 25a159c266SJung-uk Kim * from this software without specific prior written permission. 26a159c266SJung-uk Kim * 27a159c266SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 28a159c266SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 29a159c266SJung-uk Kim * Software Foundation. 30a159c266SJung-uk Kim * 31a159c266SJung-uk Kim * NO WARRANTY 32a159c266SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33a159c266SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34a159c266SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35a159c266SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36a159c266SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37a159c266SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38a159c266SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39a159c266SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40a159c266SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41a159c266SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42a159c266SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 43a159c266SJung-uk Kim */ 44a159c266SJung-uk Kim 45a159c266SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h> 46a159c266SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h> 47a159c266SJung-uk Kim #include <contrib/dev/acpica/include/acdebug.h> 48a159c266SJung-uk Kim #include <contrib/dev/acpica/include/actables.h> 49*f8146b88SJung-uk Kim #include <stdio.h> 50*f8146b88SJung-uk Kim #ifdef ACPI_APPLICATION 51*f8146b88SJung-uk Kim #include <contrib/dev/acpica/include/acapps.h> 52*f8146b88SJung-uk Kim #endif 53a159c266SJung-uk Kim 54a159c266SJung-uk Kim #define _COMPONENT ACPI_CA_DEBUGGER 55a159c266SJung-uk Kim ACPI_MODULE_NAME ("dbfileio") 56a159c266SJung-uk Kim 57a159c266SJung-uk Kim 5870e6ab8fSJung-uk Kim #ifdef ACPI_DEBUGGER 59a159c266SJung-uk Kim /******************************************************************************* 60a159c266SJung-uk Kim * 61a159c266SJung-uk Kim * FUNCTION: AcpiDbCloseDebugFile 62a159c266SJung-uk Kim * 63a159c266SJung-uk Kim * PARAMETERS: None 64a159c266SJung-uk Kim * 65a159c266SJung-uk Kim * RETURN: None 66a159c266SJung-uk Kim * 67a159c266SJung-uk Kim * DESCRIPTION: If open, close the current debug output file 68a159c266SJung-uk Kim * 69a159c266SJung-uk Kim ******************************************************************************/ 70a159c266SJung-uk Kim 71a159c266SJung-uk Kim void 72a159c266SJung-uk Kim AcpiDbCloseDebugFile ( 73a159c266SJung-uk Kim void) 74a159c266SJung-uk Kim { 75a159c266SJung-uk Kim 76a159c266SJung-uk Kim #ifdef ACPI_APPLICATION 77a159c266SJung-uk Kim 78a159c266SJung-uk Kim if (AcpiGbl_DebugFile) 79a159c266SJung-uk Kim { 80a159c266SJung-uk Kim fclose (AcpiGbl_DebugFile); 81a159c266SJung-uk Kim AcpiGbl_DebugFile = NULL; 82a159c266SJung-uk Kim AcpiGbl_DbOutputToFile = FALSE; 8370e6ab8fSJung-uk Kim AcpiOsPrintf ("Debug output file %s closed\n", 8470e6ab8fSJung-uk Kim AcpiGbl_DbDebugFilename); 85a159c266SJung-uk Kim } 86a159c266SJung-uk Kim #endif 87a159c266SJung-uk Kim } 88a159c266SJung-uk Kim 89a159c266SJung-uk Kim 90a159c266SJung-uk Kim /******************************************************************************* 91a159c266SJung-uk Kim * 92a159c266SJung-uk Kim * FUNCTION: AcpiDbOpenDebugFile 93a159c266SJung-uk Kim * 94a159c266SJung-uk Kim * PARAMETERS: Name - Filename to open 95a159c266SJung-uk Kim * 96a159c266SJung-uk Kim * RETURN: None 97a159c266SJung-uk Kim * 98a159c266SJung-uk Kim * DESCRIPTION: Open a file where debug output will be directed. 99a159c266SJung-uk Kim * 100a159c266SJung-uk Kim ******************************************************************************/ 101a159c266SJung-uk Kim 102a159c266SJung-uk Kim void 103a159c266SJung-uk Kim AcpiDbOpenDebugFile ( 104a159c266SJung-uk Kim char *Name) 105a159c266SJung-uk Kim { 106a159c266SJung-uk Kim 107a159c266SJung-uk Kim #ifdef ACPI_APPLICATION 108a159c266SJung-uk Kim 109a159c266SJung-uk Kim AcpiDbCloseDebugFile (); 110a159c266SJung-uk Kim AcpiGbl_DebugFile = fopen (Name, "w+"); 111ed17e06eSJung-uk Kim if (!AcpiGbl_DebugFile) 112a159c266SJung-uk Kim { 113ed17e06eSJung-uk Kim AcpiOsPrintf ("Could not open debug file %s\n", Name); 114ed17e06eSJung-uk Kim return; 115ed17e06eSJung-uk Kim } 116ed17e06eSJung-uk Kim 117a159c266SJung-uk Kim AcpiOsPrintf ("Debug output file %s opened\n", Name); 1185ef50723SJung-uk Kim strncpy (AcpiGbl_DbDebugFilename, Name, 11979c6d946SJung-uk Kim sizeof (AcpiGbl_DbDebugFilename)); 120a159c266SJung-uk Kim AcpiGbl_DbOutputToFile = TRUE; 121a159c266SJung-uk Kim 122a159c266SJung-uk Kim #endif 123a159c266SJung-uk Kim } 124a159c266SJung-uk Kim #endif 125a159c266SJung-uk Kim 126a159c266SJung-uk Kim 127a159c266SJung-uk Kim /******************************************************************************* 128a159c266SJung-uk Kim * 129*f8146b88SJung-uk Kim * FUNCTION: AcpiDbLoadTables 130a159c266SJung-uk Kim * 131*f8146b88SJung-uk Kim * PARAMETERS: ListHead - List of ACPI tables to load 132a159c266SJung-uk Kim * 133a159c266SJung-uk Kim * RETURN: Status 134a159c266SJung-uk Kim * 135*f8146b88SJung-uk Kim * DESCRIPTION: Load ACPI tables from a previously constructed table list. 136a159c266SJung-uk Kim * 137a159c266SJung-uk Kim ******************************************************************************/ 138a159c266SJung-uk Kim 139a159c266SJung-uk Kim ACPI_STATUS 140*f8146b88SJung-uk Kim AcpiDbLoadTables ( 141*f8146b88SJung-uk Kim ACPI_NEW_TABLE_DESC *ListHead) 142a159c266SJung-uk Kim { 143a159c266SJung-uk Kim ACPI_STATUS Status; 144*f8146b88SJung-uk Kim ACPI_NEW_TABLE_DESC *TableListHead; 145a159c266SJung-uk Kim ACPI_TABLE_HEADER *Table; 146a159c266SJung-uk Kim 147a159c266SJung-uk Kim 148*f8146b88SJung-uk Kim /* Load all ACPI tables in the list */ 149*f8146b88SJung-uk Kim 150*f8146b88SJung-uk Kim TableListHead = ListHead; 151*f8146b88SJung-uk Kim while (TableListHead) 152a159c266SJung-uk Kim { 153*f8146b88SJung-uk Kim Table = TableListHead->Table; 154a159c266SJung-uk Kim 155*f8146b88SJung-uk Kim Status = AcpiLoadTable (Table); 156a159c266SJung-uk Kim if (ACPI_FAILURE (Status)) 157a159c266SJung-uk Kim { 158a159c266SJung-uk Kim if (Status == AE_ALREADY_EXISTS) 159a159c266SJung-uk Kim { 160a159c266SJung-uk Kim AcpiOsPrintf ("Table %4.4s is already installed\n", 161a159c266SJung-uk Kim Table->Signature); 162a159c266SJung-uk Kim } 163a159c266SJung-uk Kim else 164a159c266SJung-uk Kim { 165a159c266SJung-uk Kim AcpiOsPrintf ("Could not install table, %s\n", 166a159c266SJung-uk Kim AcpiFormatException (Status)); 167a159c266SJung-uk Kim } 168a159c266SJung-uk Kim 169a159c266SJung-uk Kim return (Status); 170a159c266SJung-uk Kim } 171a159c266SJung-uk Kim 172a159c266SJung-uk Kim fprintf (stderr, 173a159c266SJung-uk Kim "Acpi table [%4.4s] successfully installed and loaded\n", 174a159c266SJung-uk Kim Table->Signature); 175*f8146b88SJung-uk Kim 176*f8146b88SJung-uk Kim TableListHead = TableListHead->Next; 177a159c266SJung-uk Kim } 178a159c266SJung-uk Kim 179a159c266SJung-uk Kim return (AE_OK); 180a159c266SJung-uk Kim } 181