xref: /netbsd-src/sys/external/bsd/acpica/dist/utilities/utxferror.c (revision 2c7d7e3ca2e4f0b675c6c58e614f6aede66c678e)
1 /*******************************************************************************
2  *
3  * Module Name: utxferror - Various error/warning output functions
4  *
5  ******************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2023, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #define EXPORT_ACPI_INTERFACES
45 
46 #include "acpi.h"
47 #include "accommon.h"
48 
49 
50 #define _COMPONENT          ACPI_UTILITIES
51         ACPI_MODULE_NAME    ("utxferror")
52 
53 /*
54  * This module is used for the in-kernel ACPICA as well as the ACPICA
55  * tools/applications.
56  */
57 
58 #ifndef ACPI_NO_ERROR_MESSAGES /* Entire module */
59 
60 /*******************************************************************************
61  *
62  * FUNCTION:    AcpiError
63  *
64  * PARAMETERS:  ModuleName          - Caller's module name (for error output)
65  *              LineNumber          - Caller's line number (for error output)
66  *              Format              - Printf format string + additional args
67  *
68  * RETURN:      None
69  *
70  * DESCRIPTION: Print "ACPI Error" message with module/line/version info
71  *
72  ******************************************************************************/
73 
74 void ACPI_INTERNAL_VAR_XFACE
AcpiError(const char * ModuleName,UINT32 LineNumber,const char * Format,...)75 AcpiError (
76     const char              *ModuleName,
77     UINT32                  LineNumber,
78     const char              *Format,
79     ...)
80 {
81     va_list                 ArgList;
82 
83 
84     ACPI_MSG_REDIRECT_BEGIN;
85     AcpiOsPrintf (ACPI_MSG_ERROR);
86 
87     va_start (ArgList, Format);
88     AcpiOsVprintf (Format, ArgList);
89     ACPI_MSG_SUFFIX;
90     va_end (ArgList);
91 
92     ACPI_MSG_REDIRECT_END;
93 }
94 
ACPI_EXPORT_SYMBOL(AcpiError)95 ACPI_EXPORT_SYMBOL (AcpiError)
96 
97 
98 /*******************************************************************************
99  *
100  * FUNCTION:    AcpiException
101  *
102  * PARAMETERS:  ModuleName          - Caller's module name (for error output)
103  *              LineNumber          - Caller's line number (for error output)
104  *              Status              - Status value to be decoded/formatted
105  *              Format              - Printf format string + additional args
106  *
107  * RETURN:      None
108  *
109  * DESCRIPTION: Print an "ACPI Error" message with module/line/version
110  *              info as well as decoded ACPI_STATUS.
111  *
112  ******************************************************************************/
113 
114 void ACPI_INTERNAL_VAR_XFACE
115 AcpiException (
116     const char              *ModuleName,
117     UINT32                  LineNumber,
118     ACPI_STATUS             Status,
119     const char              *Format,
120     ...)
121 {
122     va_list                 ArgList;
123 
124 
125     ACPI_MSG_REDIRECT_BEGIN;
126 
127     /* For AE_OK, just print the message */
128 
129     if (ACPI_SUCCESS (Status))
130     {
131         AcpiOsPrintf (ACPI_MSG_ERROR);
132 
133     }
134     else
135     {
136         AcpiOsPrintf (ACPI_MSG_ERROR "%s, ",
137             AcpiFormatException (Status));
138     }
139 
140     va_start (ArgList, Format);
141     AcpiOsVprintf (Format, ArgList);
142     ACPI_MSG_SUFFIX;
143     va_end (ArgList);
144 
145     ACPI_MSG_REDIRECT_END;
146 }
147 
ACPI_EXPORT_SYMBOL(AcpiException)148 ACPI_EXPORT_SYMBOL (AcpiException)
149 
150 
151 /*******************************************************************************
152  *
153  * FUNCTION:    AcpiWarning
154  *
155  * PARAMETERS:  ModuleName          - Caller's module name (for warning output)
156  *              LineNumber          - Caller's line number (for warning output)
157  *              Format              - Printf format string + additional args
158  *
159  * RETURN:      None
160  *
161  * DESCRIPTION: Print "ACPI Warning" message with module/line/version info
162  *
163  ******************************************************************************/
164 
165 void ACPI_INTERNAL_VAR_XFACE
166 AcpiWarning (
167     const char              *ModuleName,
168     UINT32                  LineNumber,
169     const char              *Format,
170     ...)
171 {
172     va_list                 ArgList;
173 
174 
175     ACPI_MSG_REDIRECT_BEGIN;
176     AcpiOsPrintf (ACPI_MSG_WARNING);
177 
178     va_start (ArgList, Format);
179     AcpiOsVprintf (Format, ArgList);
180     ACPI_MSG_SUFFIX;
181     va_end (ArgList);
182 
183     ACPI_MSG_REDIRECT_END;
184 }
185 
ACPI_EXPORT_SYMBOL(AcpiWarning)186 ACPI_EXPORT_SYMBOL (AcpiWarning)
187 
188 
189 /*******************************************************************************
190  *
191  * FUNCTION:    AcpiInfo
192  *
193  * PARAMETERS:  Format              - Printf format string + additional args
194  *
195  * RETURN:      None
196  *
197  * DESCRIPTION: Print generic "ACPI:" information message. There is no
198  *              module/line/version info in order to keep the message simple.
199  *
200  ******************************************************************************/
201 
202 void ACPI_INTERNAL_VAR_XFACE
203 AcpiInfo (
204     const char              *Format,
205     ...)
206 {
207     va_list                 ArgList;
208 
209 #if defined(ACPI_QUIET_BOOT)
210     if (ACPI_QUIET_BOOT) {
211         return;
212     }
213 #endif
214 
215     ACPI_MSG_REDIRECT_BEGIN;
216     AcpiOsPrintf (ACPI_MSG_INFO);
217 
218     va_start (ArgList, Format);
219     AcpiOsVprintf (Format, ArgList);
220     AcpiOsPrintf ("\n");
221     va_end (ArgList);
222 
223     ACPI_MSG_REDIRECT_END;
224 }
225 
ACPI_EXPORT_SYMBOL(AcpiInfo)226 ACPI_EXPORT_SYMBOL (AcpiInfo)
227 
228 
229 /*******************************************************************************
230  *
231  * FUNCTION:    AcpiBiosError
232  *
233  * PARAMETERS:  ModuleName          - Caller's module name (for error output)
234  *              LineNumber          - Caller's line number (for error output)
235  *              Format              - Printf format string + additional args
236  *
237  * RETURN:      None
238  *
239  * DESCRIPTION: Print "ACPI Firmware Error" message with module/line/version
240  *              info
241  *
242  ******************************************************************************/
243 
244 void ACPI_INTERNAL_VAR_XFACE
245 AcpiBiosError (
246     const char              *ModuleName,
247     UINT32                  LineNumber,
248     const char              *Format,
249     ...)
250 {
251     va_list                 ArgList;
252 
253 
254     ACPI_MSG_REDIRECT_BEGIN;
255     AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
256 
257     va_start (ArgList, Format);
258     AcpiOsVprintf (Format, ArgList);
259     ACPI_MSG_SUFFIX;
260     va_end (ArgList);
261 
262     ACPI_MSG_REDIRECT_END;
263 }
264 
ACPI_EXPORT_SYMBOL(AcpiBiosError)265 ACPI_EXPORT_SYMBOL (AcpiBiosError)
266 
267 
268 /*******************************************************************************
269  *
270  * FUNCTION:    AcpiBiosException
271  *
272  * PARAMETERS:  ModuleName          - Caller's module name (for error output)
273  *              LineNumber          - Caller's line number (for error output)
274  *              Status              - Status value to be decoded/formatted
275  *              Format              - Printf format string + additional args
276  *
277  * RETURN:      None
278  *
279  * DESCRIPTION: Print an "ACPI Firmware Error" message with module/line/version
280  *              info as well as decoded ACPI_STATUS.
281  *
282  ******************************************************************************/
283 
284 void ACPI_INTERNAL_VAR_XFACE
285 AcpiBiosException (
286     const char              *ModuleName,
287     UINT32                  LineNumber,
288     ACPI_STATUS             Status,
289     const char              *Format,
290     ...)
291 {
292     va_list                 ArgList;
293 
294 
295     ACPI_MSG_REDIRECT_BEGIN;
296 
297     /* For AE_OK, just print the message */
298 
299     if (ACPI_SUCCESS (Status))
300     {
301         AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
302 
303     }
304     else
305     {
306         AcpiOsPrintf (ACPI_MSG_BIOS_ERROR "%s, ",
307             AcpiFormatException (Status));
308     }
309 
310     va_start (ArgList, Format);
311     AcpiOsVprintf (Format, ArgList);
312     ACPI_MSG_SUFFIX;
313     va_end (ArgList);
314 
315     ACPI_MSG_REDIRECT_END;
316 }
317 
ACPI_EXPORT_SYMBOL(AcpiBiosException)318 ACPI_EXPORT_SYMBOL (AcpiBiosException)
319 
320 
321 /*******************************************************************************
322  *
323  * FUNCTION:    AcpiBiosWarning
324  *
325  * PARAMETERS:  ModuleName          - Caller's module name (for warning output)
326  *              LineNumber          - Caller's line number (for warning output)
327  *              Format              - Printf format string + additional args
328  *
329  * RETURN:      None
330  *
331  * DESCRIPTION: Print "ACPI Firmware Warning" message with module/line/version
332  *              info
333  *
334  ******************************************************************************/
335 
336 void ACPI_INTERNAL_VAR_XFACE
337 AcpiBiosWarning (
338     const char              *ModuleName,
339     UINT32                  LineNumber,
340     const char              *Format,
341     ...)
342 {
343     va_list                 ArgList;
344 
345 
346     ACPI_MSG_REDIRECT_BEGIN;
347     AcpiOsPrintf (ACPI_MSG_BIOS_WARNING);
348 
349     va_start (ArgList, Format);
350     AcpiOsVprintf (Format, ArgList);
351     ACPI_MSG_SUFFIX;
352     va_end (ArgList);
353 
354     ACPI_MSG_REDIRECT_END;
355 }
356 
357 ACPI_EXPORT_SYMBOL (AcpiBiosWarning)
358 
359 #endif /* ACPI_NO_ERROR_MESSAGES */
360