linux/drivers/acpi/acpica/dbfileio.c
<<
>>
Prefs
   1// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
   2/*******************************************************************************
   3 *
   4 * Module Name: dbfileio - Debugger file I/O commands. These can't usually
   5 *              be used when running the debugger in Ring 0 (Kernel mode)
   6 *
   7 ******************************************************************************/
   8
   9#include <acpi/acpi.h>
  10#include "accommon.h"
  11#include "acdebug.h"
  12#include "actables.h"
  13
  14#define _COMPONENT          ACPI_CA_DEBUGGER
  15ACPI_MODULE_NAME("dbfileio")
  16
  17#ifdef ACPI_APPLICATION
  18#include "acapps.h"
  19#ifdef ACPI_DEBUGGER
  20/*******************************************************************************
  21 *
  22 * FUNCTION:    acpi_db_close_debug_file
  23 *
  24 * PARAMETERS:  None
  25 *
  26 * RETURN:      None
  27 *
  28 * DESCRIPTION: If open, close the current debug output file
  29 *
  30 ******************************************************************************/
  31void acpi_db_close_debug_file(void)
  32{
  33
  34        if (acpi_gbl_debug_file) {
  35                fclose(acpi_gbl_debug_file);
  36                acpi_gbl_debug_file = NULL;
  37                acpi_gbl_db_output_to_file = FALSE;
  38                acpi_os_printf("Debug output file %s closed\n",
  39                               acpi_gbl_db_debug_filename);
  40        }
  41}
  42
  43/*******************************************************************************
  44 *
  45 * FUNCTION:    acpi_db_open_debug_file
  46 *
  47 * PARAMETERS:  name                - Filename to open
  48 *
  49 * RETURN:      None
  50 *
  51 * DESCRIPTION: Open a file where debug output will be directed.
  52 *
  53 ******************************************************************************/
  54
  55void acpi_db_open_debug_file(char *name)
  56{
  57
  58        acpi_db_close_debug_file();
  59        acpi_gbl_debug_file = fopen(name, "w+");
  60        if (!acpi_gbl_debug_file) {
  61                acpi_os_printf("Could not open debug file %s\n", name);
  62                return;
  63        }
  64
  65        acpi_os_printf("Debug output file %s opened\n", name);
  66        acpi_ut_safe_strncpy(acpi_gbl_db_debug_filename, name,
  67                             sizeof(acpi_gbl_db_debug_filename));
  68        acpi_gbl_db_output_to_file = TRUE;
  69}
  70#endif
  71
  72/*******************************************************************************
  73 *
  74 * FUNCTION:    acpi_db_load_tables
  75 *
  76 * PARAMETERS:  list_head       - List of ACPI tables to load
  77 *
  78 * RETURN:      Status
  79 *
  80 * DESCRIPTION: Load ACPI tables from a previously constructed table list.
  81 *
  82 ******************************************************************************/
  83
  84acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
  85{
  86        acpi_status status;
  87        struct acpi_new_table_desc *table_list_head;
  88        struct acpi_table_header *table;
  89
  90        /* Load all ACPI tables in the list */
  91
  92        table_list_head = list_head;
  93        while (table_list_head) {
  94                table = table_list_head->table;
  95
  96                status = acpi_load_table(table, NULL);
  97                if (ACPI_FAILURE(status)) {
  98                        if (status == AE_ALREADY_EXISTS) {
  99                                acpi_os_printf
 100                                    ("Table %4.4s is already installed\n",
 101                                     table->signature);
 102                        } else {
 103                                acpi_os_printf("Could not install table, %s\n",
 104                                               acpi_format_exception(status));
 105                        }
 106
 107                        return (status);
 108                }
 109
 110                acpi_os_printf
 111                    ("Acpi table [%4.4s] successfully installed and loaded\n",
 112                     table->signature);
 113
 114                table_list_head = table_list_head->next;
 115        }
 116
 117        return (AE_OK);
 118}
 119#endif
 120