blob: c6e25734dc5cd3057417a816b7c9bceb1b53437a [file] [log] [blame]
Erik Schmauss95857632018-03-14 16:13:07 -07001// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
Lv Zheng99575102015-10-19 10:25:20 +08002/*******************************************************************************
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
Lv Zheng99575102015-10-19 10:25:20 +08009#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
Lv Zhenge8f2c162016-08-04 16:44:04 +080017#ifdef ACPI_APPLICATION
18#include "acapps.h"
Lv Zheng99575102015-10-19 10:25:20 +080019#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
Lv Zheng99575102015-10-19 10:25:20 +080034 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 }
Lv Zheng99575102015-10-19 10:25:20 +080041}
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
Lv Zheng99575102015-10-19 10:25:20 +080058 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);
Bob Mooreee68d472018-01-04 13:41:27 -080066 acpi_ut_safe_strncpy(acpi_gbl_db_debug_filename, name,
67 sizeof(acpi_gbl_db_debug_filename));
Lv Zheng99575102015-10-19 10:25:20 +080068 acpi_gbl_db_output_to_file = TRUE;
Lv Zheng99575102015-10-19 10:25:20 +080069}
70#endif
71
Lv Zheng99575102015-10-19 10:25:20 +080072/*******************************************************************************
73 *
Bob Moore2ba73792015-12-29 13:54:58 +080074 * FUNCTION: acpi_db_load_tables
Lv Zheng99575102015-10-19 10:25:20 +080075 *
Bob Moore2ba73792015-12-29 13:54:58 +080076 * PARAMETERS: list_head - List of ACPI tables to load
Lv Zheng99575102015-10-19 10:25:20 +080077 *
78 * RETURN: Status
79 *
Bob Moore2ba73792015-12-29 13:54:58 +080080 * DESCRIPTION: Load ACPI tables from a previously constructed table list.
Lv Zheng99575102015-10-19 10:25:20 +080081 *
82 ******************************************************************************/
83
Bob Moore2ba73792015-12-29 13:54:58 +080084acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
Lv Zheng99575102015-10-19 10:25:20 +080085{
Lv Zheng99575102015-10-19 10:25:20 +080086 acpi_status status;
Bob Moore2ba73792015-12-29 13:54:58 +080087 struct acpi_new_table_desc *table_list_head;
Lv Zheng99575102015-10-19 10:25:20 +080088 struct acpi_table_header *table;
Lv Zheng99575102015-10-19 10:25:20 +080089
Bob Moore2ba73792015-12-29 13:54:58 +080090 /* Load all ACPI tables in the list */
Lv Zheng99575102015-10-19 10:25:20 +080091
Bob Moore2ba73792015-12-29 13:54:58 +080092 table_list_head = list_head;
93 while (table_list_head) {
94 table = table_list_head->table;
Lv Zheng99575102015-10-19 10:25:20 +080095
Bob Moore2ba73792015-12-29 13:54:58 +080096 status = acpi_load_table(table);
Lv Zheng99575102015-10-19 10:25:20 +080097 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
Lv Zhenge8f2c162016-08-04 16:44:04 +0800110 acpi_os_printf
111 ("Acpi table [%4.4s] successfully installed and loaded\n",
112 table->signature);
Bob Moore2ba73792015-12-29 13:54:58 +0800113
114 table_list_head = table_list_head->next;
Lv Zheng99575102015-10-19 10:25:20 +0800115 }
116
Lv Zheng99575102015-10-19 10:25:20 +0800117 return (AE_OK);
118}
Lv Zhenge8f2c162016-08-04 16:44:04 +0800119#endif