2018-03-15 02:13:07 +03:00
// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
2005-04-17 02:20:36 +04:00
/******************************************************************************
*
2013-06-08 04:57:47 +04:00
* Module Name : utdebug - Debug print / trace routines
2005-04-17 02:20:36 +04:00
*
2021-01-15 21:48:25 +03:00
* Copyright ( C ) 2000 - 2021 , Intel Corp .
2005-04-17 02:20:36 +04:00
*
2018-03-15 02:13:07 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
2013-10-29 05:29:51 +04:00
# define EXPORT_ACPI_INTERFACES
2005-04-17 02:20:36 +04:00
# include <acpi/acpi.h>
2009-01-09 08:30:03 +03:00
# include "accommon.h"
2015-07-23 07:53:07 +03:00
# include "acinterp.h"
2005-04-17 02:20:36 +04:00
# define _COMPONENT ACPI_UTILITIES
2005-08-05 08:44:28 +04:00
ACPI_MODULE_NAME ( " utdebug " )
2012-10-31 06:25:05 +04:00
2005-04-17 02:20:36 +04:00
# ifdef ACPI_DEBUG_OUTPUT
2016-03-24 04:40:40 +03:00
static acpi_thread_id acpi_gbl_previous_thread_id = ( acpi_thread_id ) 0xFFFFFFFF ;
static const char * acpi_gbl_function_entry_prefix = " ----Entry " ;
static const char * acpi_gbl_function_exit_prefix = " ----Exit- " ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_init_stack_ptr_trace
*
* PARAMETERS : None
*
* RETURN : None
*
2005-04-19 06:49:35 +04:00
* DESCRIPTION : Save the current CPU stack pointer at subsystem startup
2005-04-17 02:20:36 +04:00
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ut_init_stack_ptr_trace ( void )
2005-04-17 02:20:36 +04:00
{
2008-04-10 19:06:40 +04:00
acpi_size current_sp ;
2005-04-17 02:20:36 +04:00
2008-04-10 19:06:40 +04:00
acpi_gbl_entry_stack_pointer = & current_sp ;
2005-04-17 02:20:36 +04:00
}
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_track_stack_ptr
*
* PARAMETERS : None
*
* RETURN : None
*
2005-04-19 06:49:35 +04:00
* DESCRIPTION : Save the current CPU stack pointer
2005-04-17 02:20:36 +04:00
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ut_track_stack_ptr ( void )
2005-04-17 02:20:36 +04:00
{
2005-08-05 08:44:28 +04:00
acpi_size current_sp ;
2005-04-17 02:20:36 +04:00
2008-04-10 19:06:40 +04:00
if ( & current_sp < acpi_gbl_lowest_stack_pointer ) {
acpi_gbl_lowest_stack_pointer = & current_sp ;
2005-04-17 02:20:36 +04:00
}
if ( acpi_gbl_nesting_level > acpi_gbl_deepest_nesting ) {
acpi_gbl_deepest_nesting = acpi_gbl_nesting_level ;
}
}
2005-07-30 02:15:00 +04:00
/*******************************************************************************
*
* FUNCTION : acpi_ut_trim_function_name
*
* PARAMETERS : function_name - Ascii string containing a procedure name
*
* RETURN : Updated pointer to the function name
*
* DESCRIPTION : Remove the " Acpi " prefix from the function name , if present .
2015-06-19 06:38:22 +03:00
* This allows compiler macros such as __func__ to be used
* with no change to the debug output .
2005-07-30 02:15:00 +04:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-08-05 08:44:28 +04:00
static const char * acpi_ut_trim_function_name ( const char * function_name )
2005-07-30 02:15:00 +04:00
{
/* All Function names are longer than 4 chars, check is safe */
2005-08-15 15:42:00 +04:00
if ( * ( ACPI_CAST_PTR ( u32 , function_name ) ) = = ACPI_PREFIX_MIXED ) {
2006-10-02 08:00:00 +04:00
2005-07-30 02:15:00 +04:00
/* This is the case where the original source has not been modified */
return ( function_name + 4 ) ;
}
2005-08-15 15:42:00 +04:00
if ( * ( ACPI_CAST_PTR ( u32 , function_name ) ) = = ACPI_PREFIX_LOWER ) {
2006-10-02 08:00:00 +04:00
2005-07-30 02:15:00 +04:00
/* This is the case where the source has been 'linuxized' */
return ( function_name + 5 ) ;
}
return ( function_name ) ;
}
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
2008-12-30 22:01:23 +03:00
* FUNCTION : acpi_debug_print
2005-04-17 02:20:36 +04:00
*
2005-04-19 06:49:35 +04:00
* PARAMETERS : requested_debug_level - Requested debug print level
2005-04-17 02:20:36 +04:00
* line_number - Caller ' s line number ( for error output )
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* format - Printf format field
2005-04-17 02:20:36 +04:00
* . . . - Optional printf arguments
*
* RETURN : None
*
* DESCRIPTION : Print error message with prefix consisting of the module name ,
* line number , and component ID .
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void ACPI_INTERNAL_VAR_XFACE
2008-12-30 22:01:23 +03:00
acpi_debug_print ( u32 requested_debug_level ,
u32 line_number ,
const char * function_name ,
const char * module_name ,
u32 component_id , const char * format , . . . )
2005-04-17 02:20:36 +04:00
{
2006-10-03 08:00:00 +04:00
acpi_thread_id thread_id ;
2005-08-05 08:44:28 +04:00
va_list args ;
2018-01-04 02:06:24 +03:00
# ifdef ACPI_APPLICATION
2018-01-04 02:06:21 +03:00
int fill_count ;
2018-01-04 02:06:24 +03:00
# endif
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if debug output enabled */
if ( ! ACPI_IS_DEBUG_ENABLED ( requested_debug_level , component_id ) ) {
2005-04-17 02:20:36 +04:00
return ;
}
/*
* Thread tracking and context switch notification
*/
2005-08-05 08:44:28 +04:00
thread_id = acpi_os_get_thread_id ( ) ;
2016-03-24 04:40:40 +03:00
if ( thread_id ! = acpi_gbl_previous_thread_id ) {
2005-04-17 02:20:36 +04:00
if ( ACPI_LV_THREADS & acpi_dbg_level ) {
2005-08-05 08:44:28 +04:00
acpi_os_printf
2010-09-15 09:55:13 +04:00
( " \n **** Context Switch from TID %u to TID %u **** \n \n " ,
2016-03-24 04:40:40 +03:00
( u32 ) acpi_gbl_previous_thread_id , ( u32 ) thread_id ) ;
2005-04-17 02:20:36 +04:00
}
2016-03-24 04:40:40 +03:00
acpi_gbl_previous_thread_id = thread_id ;
2013-11-21 08:17:20 +04:00
acpi_gbl_nesting_level = 0 ;
2005-04-17 02:20:36 +04:00
}
/*
* Display the module name , current line number , thread ID ( if requested ) ,
* current procedure nesting level , and the current procedure name
*/
2019-08-17 00:43:25 +03:00
acpi_os_printf ( " %9s-%04d " , module_name , line_number ) ;
2005-04-17 02:20:36 +04:00
2014-01-08 09:43:12 +04:00
# ifdef ACPI_APPLICATION
2013-11-21 08:17:20 +04:00
/*
2014-01-08 09:43:12 +04:00
* For acpi_exec / iASL only , emit the thread ID and nesting level .
2013-11-21 08:17:20 +04:00
* Note : nesting level is really only useful during a single - thread
* execution . Otherwise , multiple threads will keep resetting the
* level .
*/
2005-04-17 02:20:36 +04:00
if ( ACPI_LV_THREADS & acpi_dbg_level ) {
2010-09-15 09:55:13 +04:00
acpi_os_printf ( " [%u] " , ( u32 ) thread_id ) ;
2005-04-17 02:20:36 +04:00
}
2018-01-04 02:06:21 +03:00
fill_count = 48 - acpi_gbl_nesting_level -
strlen ( acpi_ut_trim_function_name ( function_name ) ) ;
if ( fill_count < 0 ) {
fill_count = 0 ;
}
2013-11-21 08:17:20 +04:00
2019-08-17 00:43:25 +03:00
acpi_os_printf ( " [%02d] %*s " ,
2018-01-04 02:06:23 +03:00
acpi_gbl_nesting_level , acpi_gbl_nesting_level + 1 , " " ) ;
2018-01-04 02:06:21 +03:00
acpi_os_printf ( " %s%*s: " ,
acpi_ut_trim_function_name ( function_name ) , fill_count ,
" " ) ;
# else
2013-11-21 08:17:20 +04:00
acpi_os_printf ( " %-22.22s: " , acpi_ut_trim_function_name ( function_name ) ) ;
2018-01-04 02:06:21 +03:00
# endif
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
va_start ( args , format ) ;
acpi_os_vprintf ( format , args ) ;
2008-04-10 19:06:42 +04:00
va_end ( args ) ;
2005-04-17 02:20:36 +04:00
}
2008-12-30 22:01:23 +03:00
ACPI_EXPORT_SYMBOL ( acpi_debug_print )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
2008-12-30 22:01:23 +03:00
* FUNCTION : acpi_debug_print_raw
2005-04-17 02:20:36 +04:00
*
* PARAMETERS : requested_debug_level - Requested debug print level
* line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* format - Printf format field
2005-04-17 02:20:36 +04:00
* . . . - Optional printf arguments
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Print message with no headers . Has same interface as
2005-04-17 02:20:36 +04:00
* debug_print so that the same macros can be used .
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-08-05 08:44:28 +04:00
void ACPI_INTERNAL_VAR_XFACE
2008-12-30 22:01:23 +03:00
acpi_debug_print_raw ( u32 requested_debug_level ,
u32 line_number ,
const char * function_name ,
const char * module_name ,
u32 component_id , const char * format , . . . )
2005-04-17 02:20:36 +04:00
{
2005-08-05 08:44:28 +04:00
va_list args ;
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if debug output enabled */
if ( ! ACPI_IS_DEBUG_ENABLED ( requested_debug_level , component_id ) ) {
2005-04-17 02:20:36 +04:00
return ;
}
2005-08-05 08:44:28 +04:00
va_start ( args , format ) ;
acpi_os_vprintf ( format , args ) ;
2008-04-10 19:06:42 +04:00
va_end ( args ) ;
2005-04-17 02:20:36 +04:00
}
2008-12-30 22:01:23 +03:00
ACPI_EXPORT_SYMBOL ( acpi_debug_print_raw )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_trace
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_trace ( u32 line_number ,
2008-06-10 09:55:53 +04:00
const char * function_name ,
const char * module_name , u32 component_id )
2005-04-17 02:20:36 +04:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 08:44:28 +04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
2016-03-24 04:40:40 +03:00
component_id , " %s \n " ,
acpi_gbl_function_entry_prefix ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
}
2006-10-03 08:00:00 +04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_trace )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_trace_ptr
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* pointer - Pointer to display
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_trace_ptr ( u32 line_number ,
const char * function_name ,
2016-03-24 04:40:40 +03:00
const char * module_name ,
u32 component_id , const void * pointer )
2005-04-17 02:20:36 +04:00
{
2012-10-31 06:26:01 +04:00
2005-04-17 02:20:36 +04:00
acpi_gbl_nesting_level + + ;
2005-08-05 08:44:28 +04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
2016-03-24 04:40:40 +03:00
component_id , " %s %p \n " ,
acpi_gbl_function_entry_prefix , pointer ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
}
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_trace_str
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* string - Additional string to display
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_trace_str ( u32 line_number ,
const char * function_name ,
2016-03-24 04:40:40 +03:00
const char * module_name , u32 component_id , const char * string )
2005-04-17 02:20:36 +04:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 08:44:28 +04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
2016-03-24 04:40:40 +03:00
component_id , " %s %s \n " ,
acpi_gbl_function_entry_prefix , string ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
}
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_trace_u32
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* integer - Integer to display
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_trace_u32 ( u32 line_number ,
const char * function_name ,
2008-06-10 09:55:53 +04:00
const char * module_name , u32 component_id , u32 integer )
2005-04-17 02:20:36 +04:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 08:44:28 +04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-17 02:20:36 +04:00
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
component_id , " %s %08X \n " ,
2016-03-24 04:40:40 +03:00
acpi_gbl_function_entry_prefix , integer ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
}
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_exit ( u32 line_number ,
2008-06-10 09:55:53 +04:00
const char * function_name ,
const char * module_name , u32 component_id )
2005-04-17 02:20:36 +04:00
{
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
2016-03-24 04:40:40 +03:00
component_id , " %s \n " ,
acpi_gbl_function_exit_prefix ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
2013-11-21 08:17:20 +04:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-17 02:20:36 +04:00
}
2006-10-03 08:00:00 +04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_exit )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_status_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* status - Exit status code
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level . Prints exit status also .
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_status_exit ( u32 line_number ,
const char * function_name ,
2008-06-10 09:55:53 +04:00
const char * module_name ,
u32 component_id , acpi_status status )
2005-04-17 02:20:36 +04:00
{
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
if ( ACPI_SUCCESS ( status ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name ,
module_name , component_id , " %s %s \n " ,
2016-03-24 04:40:40 +03:00
acpi_gbl_function_exit_prefix ,
2012-12-31 04:06:10 +04:00
acpi_format_exception ( status ) ) ;
} else {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name ,
module_name , component_id ,
" %s ****Exception****: %s \n " ,
2016-03-24 04:40:40 +03:00
acpi_gbl_function_exit_prefix ,
2012-12-31 04:06:10 +04:00
acpi_format_exception ( status ) ) ;
}
2005-04-17 02:20:36 +04:00
}
2013-11-21 08:17:20 +04:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-17 02:20:36 +04:00
}
2006-10-03 08:00:00 +04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_status_exit )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_value_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* value - Value to be printed with exit msg
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level . Prints exit value also .
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_value_exit ( u32 line_number ,
const char * function_name ,
2010-01-21 05:06:32 +03:00
const char * module_name , u32 component_id , u64 value )
2005-04-17 02:20:36 +04:00
{
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
component_id , " %s %8.8X%8.8X \n " ,
2016-03-24 04:40:40 +03:00
acpi_gbl_function_exit_prefix ,
2012-12-31 04:06:10 +04:00
ACPI_FORMAT_UINT64 ( value ) ) ;
}
2005-04-17 02:20:36 +04:00
2013-11-21 08:17:20 +04:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-17 02:20:36 +04:00
}
2006-10-03 08:00:00 +04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_value_exit )
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*******************************************************************************
2005-04-17 02:20:36 +04:00
*
* FUNCTION : acpi_ut_ptr_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 08:00:00 +04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2012-07-12 05:40:10 +04:00
* ptr - Pointer to display
2005-04-17 02:20:36 +04:00
*
* RETURN : None
*
2012-10-31 06:26:55 +04:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-17 02:20:36 +04:00
* set in debug_level . Prints exit value also .
*
2005-04-19 06:49:35 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ut_ptr_exit ( u32 line_number ,
const char * function_name ,
2008-06-10 09:55:53 +04:00
const char * module_name , u32 component_id , u8 * ptr )
2005-04-17 02:20:36 +04:00
{
2012-12-31 04:06:10 +04:00
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
2016-03-24 04:40:40 +03:00
component_id , " %s %p \n " ,
acpi_gbl_function_exit_prefix , ptr ) ;
2012-12-31 04:06:10 +04:00
}
2005-04-17 02:20:36 +04:00
2013-11-21 08:17:20 +04:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-17 02:20:36 +04:00
}
2016-08-04 11:42:19 +03:00
/*******************************************************************************
*
* FUNCTION : acpi_ut_str_exit
*
* PARAMETERS : line_number - Caller ' s line number
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
* string - String to display
*
* RETURN : None
*
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
* set in debug_level . Prints exit value also .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void
acpi_ut_str_exit ( u32 line_number ,
const char * function_name ,
const char * module_name , u32 component_id , const char * string )
{
/* Check if enabled up-front for performance */
if ( ACPI_IS_DEBUG_ENABLED ( ACPI_LV_FUNCTIONS , component_id ) ) {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name , module_name ,
component_id , " %s %s \n " ,
acpi_gbl_function_exit_prefix , string ) ;
}
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
}
2015-07-23 07:53:07 +03:00
/*******************************************************************************
*
* FUNCTION : acpi_trace_point
*
* PARAMETERS : type - Trace event type
* begin - TRUE if before execution
* aml - Executed AML address
* pathname - Object path
* pointer - Pointer to the related object
*
* RETURN : None
*
* DESCRIPTION : Interpreter execution trace .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void
acpi_trace_point ( acpi_trace_event_type type , u8 begin , u8 * aml , char * pathname )
{
ACPI_FUNCTION_ENTRY ( ) ;
acpi_ex_trace_point ( type , begin , aml , pathname ) ;
# ifdef ACPI_USE_SYSTEM_TRACER
acpi_os_trace_point ( type , begin , aml , pathname ) ;
2005-04-17 02:20:36 +04:00
# endif
2015-07-23 07:53:07 +03:00
}
2014-07-08 06:07:06 +04:00
2015-07-23 07:53:07 +03:00
ACPI_EXPORT_SYMBOL ( acpi_trace_point )
2017-04-28 03:53:22 +03:00
2015-07-23 07:53:07 +03:00
# endif