11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/****************************************************************************** 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 388ec28603c09ccba0346c15eef64ff0b4327c9eeBob Moore * Module Name: utdebug - Debug print/trace routines 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *****************************************************************************/ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 8fbb7a2dc2be493c87399550bdc2ddaa510cdf450Bob Moore * Copyright (C) 2000 - 2014, Intel Corp. 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All rights reserved. 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Redistribution and use in source and binary forms, with or without 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * modification, are permitted provided that the following conditions 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * are met: 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1. Redistributions of source code must retain the above copyright 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * notice, this list of conditions, and the following disclaimer, 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * without modification. 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * including a substantially similar Disclaimer requirement for further 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * binary redistribution. 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of any contributors may be used to endorse or promote products derived 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * from this software without specific prior written permission. 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Alternatively, this software may be distributed under the terms of the 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software Foundation. 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NO WARRANTY 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 44839e928f5bbb695c31ddc23cf3fae3cf1c9e9f20Lv Zheng#define EXPORT_ACPI_INTERFACES 45839e928f5bbb695c31ddc23cf3fae3cf1c9e9f20Lv Zheng 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <acpi/acpi.h> 47e2f7a7772880458edff1b1cc5a988947229fac26Len Brown#include "accommon.h" 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _COMPONENT ACPI_UTILITIES 504be44fcd3bf648b782f4460fd06dfae6c42ded4bLen BrownACPI_MODULE_NAME("utdebug") 516d33b6be17dd6a0934396704f969ceb7f3206347Lv Zheng 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ACPI_DEBUG_OUTPUT 536d33b6be17dd6a0934396704f969ceb7f3206347Lv Zhengstatic acpi_thread_id acpi_gbl_prev_thread_id = (acpi_thread_id) 0xFFFFFFFF; 544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_entry_str = "----Entry"; 554be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_exit_str = "----Exit-"; 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 570c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/* Local prototypes */ 580c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 594be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name); 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_init_stack_ptr_trace 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer at subsystem startup 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 7144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 734be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_init_stack_ptr_trace(void) 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 751d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_size current_sp; 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 771d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_entry_stack_pointer = ¤t_sp; 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_track_stack_ptr 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 9044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 924be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_track_stack_ptr(void) 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_size current_sp; 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 961d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore if (¤t_sp < acpi_gbl_lowest_stack_pointer) { 971d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_lowest_stack_pointer = ¤t_sp; 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) { 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_deepest_nesting = acpi_gbl_nesting_level; 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 10544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1070c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * FUNCTION: acpi_ut_trim_function_name 1080c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1090c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * PARAMETERS: function_name - Ascii string containing a procedure name 1100c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1110c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * RETURN: Updated pointer to the function name 1120c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1130c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. 1146d33b6be17dd6a0934396704f969ceb7f3206347Lv Zheng * This allows compiler macros such as __FUNCTION__ to be used 1150c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * with no change to the debug output. 1160c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1170c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore ******************************************************************************/ 1180c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name) 1200c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore{ 1210c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1220c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* All Function names are longer than 4 chars, check is safe */ 1230c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 124a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_MIXED) { 12552fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1260c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the original source has not been modified */ 1270c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1280c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 4); 1290c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1300c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 131a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_LOWER) { 13252fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1330c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the source has been 'linuxized' */ 1340c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1350c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 5); 1360c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1370c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1380c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name); 1390c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore} 1400c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1410c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/******************************************************************************* 1420c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 14350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 14544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * PARAMETERS: requested_debug_level - Requested debug print level 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number (for error output) 147f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 148f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 149f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 150ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * format - Printf format field 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Print error message with prefix consisting of the module name, 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line number, and component ID. 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 15844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1604be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 16150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print(u32 requested_debug_level, 16250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 16350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 16450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 16550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1678313524a0d466f451a62709aaedf988d8257b21cBob Moore acpi_thread_id thread_id; 1684be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 170db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if debug output enabled */ 171db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 172db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (!ACPI_IS_DEBUG_ENABLED(requested_debug_level, component_id)) { 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Thread tracking and context switch notification 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1794be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown thread_id = acpi_os_get_thread_id(); 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (thread_id != acpi_gbl_prev_thread_id) { 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 1824be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf 18328eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming ("\n**** Context Switch from TID %u to TID %u ****\n\n", 18428eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming (u32)acpi_gbl_prev_thread_id, (u32)thread_id); 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_prev_thread_id = thread_id; 188bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_gbl_nesting_level = 0; 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Display the module name, current line number, thread ID (if requested), 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * current procedure nesting level, and the current procedure name 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1952856846e3a7bee02ce6b498c760376061e41aaedBob Moore acpi_os_printf("%9s-%04ld ", module_name, line_number); 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1975076f00504c62489b63197392856b9bad1ebcbd5Bob Moore#ifdef ACPI_APPLICATION 198bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore /* 1995076f00504c62489b63197392856b9bad1ebcbd5Bob Moore * For acpi_exec/iASL only, emit the thread ID and nesting level. 200bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore * Note: nesting level is really only useful during a single-thread 201bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore * execution. Otherwise, multiple threads will keep resetting the 202bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore * level. 203bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore */ 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 20528eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming acpi_os_printf("[%u] ", (u32)thread_id); 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 208bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_os_printf("[%02ld] ", acpi_gbl_nesting_level); 209bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore#endif 210bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore 211bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_os_printf("%-22.22s: ", acpi_ut_trim_function_name(function_name)); 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2134be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2144be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 215507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 21850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print) 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 22044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 22250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print_raw 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: requested_debug_level - Requested debug print level 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number 226f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 227f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 228f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 229ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * format - Printf format field 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 23473a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Print message with no headers. Has same interface as 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * debug_print so that the same macros can be used. 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 23744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2384be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 23950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print_raw(u32 requested_debug_level, 24050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 24150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 24250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 24350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2454be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 247db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if debug output enabled */ 248db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 249db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (!ACPI_IS_DEBUG_ENABLED(requested_debug_level, component_id)) { 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2534be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 255507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 25850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print_raw) 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 26044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 265f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 266f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 267f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 27173a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 27444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 2764be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace(u32 line_number, 2774b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 2784b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 2824be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 284db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 285db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 286db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 287db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 288db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 289db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s\n", acpi_gbl_fn_entry_str); 290db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2938313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_trace) 2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 29544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_ptr 2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 300f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 301f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 302f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 303ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * pointer - Pointer to display 3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 30773a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_ptr(u32 line_number, 3134be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3144b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, void *pointer) 3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 31668aafc35161dcc9d365a32c2f9f077aedc61754dBob Moore 3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 320db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 321db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 322db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 323db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 324db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 325db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s %p\n", acpi_gbl_fn_entry_str, 326db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore pointer); 327db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 33044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_str 3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 335f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 336f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 337f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 338ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * string - Additional string to display 3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 34273a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 34544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3484be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_str(u32 line_number, 3494be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3504b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, char *string) 3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 356db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 357db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 358db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 359db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 360db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 361db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s %s\n", acpi_gbl_fn_entry_str, 362db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore string); 363db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 36644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_u32 3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 371f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 372f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 373f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 374ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * integer - Integer to display 3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 37873a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 38144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3844be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_u32(u32 line_number, 3854be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3864b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u32 integer) 3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3904be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 392db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 393db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 394db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 395db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 396db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 397db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s %08X\n", 398db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_gbl_fn_entry_str, integer); 399db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 40244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_exit 4051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 407f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 408f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 409f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 4101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41373a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_exit(u32 line_number, 4204b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 4214b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 424db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 425db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 426db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 427db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 428db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 429db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s\n", acpi_gbl_fn_exit_str); 430db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 4311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 432bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore if (acpi_gbl_nesting_level) { 433bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_gbl_nesting_level--; 434bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore } 4351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4378313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_exit) 4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 43944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_status_exit 4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 444f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 445f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 446f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 447ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * status - Exit status code 4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 45173a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit status also. 4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 45444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4564be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_status_exit(u32 line_number, 4574be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4584b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, 4594b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore u32 component_id, acpi_status status) 4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 462db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 463db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 464db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 465db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_SUCCESS(status)) { 466db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 467db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, 468db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore module_name, component_id, "%s %s\n", 469db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_gbl_fn_exit_str, 470db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_format_exception(status)); 471db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } else { 472db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 473db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, 474db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore module_name, component_id, 475db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore "%s ****Exception****: %s\n", 476db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_gbl_fn_exit_str, 477db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_format_exception(status)); 478db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore if (acpi_gbl_nesting_level) { 482bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_gbl_nesting_level--; 483bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore } 4841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4868313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_status_exit) 4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 48844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_value_exit 4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 493f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 494f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 495f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 496ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * value - Value to be printed with exit msg 4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 50073a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 5011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 50344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 5054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_value_exit(u32 line_number, 5064be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 5075df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore const char *module_name, u32 component_id, u64 value) 5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 510db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 511db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 512db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 513db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 514db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 515db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s %8.8X%8.8X\n", 516db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_gbl_fn_exit_str, 517db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore ACPI_FORMAT_UINT64(value)); 518db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 520bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore if (acpi_gbl_nesting_level) { 521bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_gbl_nesting_level--; 522bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore } 5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5258313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_value_exit) 5261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 52744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 5281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_ptr_exit 5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 532f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 533f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 534f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 535ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * ptr - Pointer to display 5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 53973a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 54244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 5444be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_ptr_exit(u32 line_number, 5454be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 5464b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u8 *ptr) 5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 549db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore /* Check if enabled up-front for performance */ 550db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore 551db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_FUNCTIONS, component_id)) { 552db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 553db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore line_number, function_name, module_name, 554db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore component_id, "%s %p\n", acpi_gbl_fn_exit_str, 555db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore ptr); 556db38bf5a57a955975986b514c6bbd7cb324fddc3Bob Moore } 5571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 558bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore if (acpi_gbl_nesting_level) { 559bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore acpi_gbl_nesting_level--; 560bf9b448ef8430548d0608a38ebddbf7f6ca14ed1Bob Moore } 5611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 5621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 5642e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng 5652e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng#ifdef ACPI_APPLICATION 5662e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng/******************************************************************************* 5672e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * 5682e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * FUNCTION: acpi_log_error 5692e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * 5702e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * PARAMETERS: format - Printf format field 5712e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * ... - Optional printf arguments 5722e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * 5732e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * RETURN: None 5742e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * 5752e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * DESCRIPTION: Print error message to the console, used by applications. 5762e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng * 5772e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng ******************************************************************************/ 5782e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng 5792e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zhengvoid ACPI_INTERNAL_VAR_XFACE acpi_log_error(const char *format, ...) 5802e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng{ 5812e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng va_list args; 5822e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng 5832e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng va_start(args, format); 5842e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng (void)acpi_ut_file_vprintf(ACPI_FILE_ERR, format, args); 5852e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng va_end(args); 5862e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng} 5872e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng 5882e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv ZhengACPI_EXPORT_SYMBOL(acpi_log_error) 5892e70da4c51eb18a4d229aa48763c15f5dbc5b43dLv Zheng#endif 590