2005-04-16 15:20:36 -07:00
/******************************************************************************
*
2013-06-08 00:57:47 +00:00
* Module Name : utdebug - Debug print / trace routines
2005-04-16 15:20:36 -07:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
2013-01-25 05:38:56 +00:00
* Copyright ( C ) 2000 - 2013 , Intel Corp .
2005-04-16 15:20:36 -07:00
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions , and the following disclaimer ,
* without modification .
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
* substantially similar to the " NO WARRANTY " disclaimer below
* ( " Disclaimer " ) and any redistribution must be conditioned upon
* including a substantially similar Disclaimer requirement for further
* binary redistribution .
* 3. Neither the names of the above - listed copyright holders nor the names
* of any contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* Alternatively , this software may be distributed under the terms of the
* GNU General Public License ( " GPL " ) version 2 as published by the Free
* Software Foundation .
*
* NO WARRANTY
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
* DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT ,
* STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES .
*/
2013-10-29 09:29:51 +08:00
# define EXPORT_ACPI_INTERFACES
2005-04-16 15:20:36 -07:00
# include <acpi/acpi.h>
2009-01-09 00:30:03 -05:00
# include "accommon.h"
2005-04-16 15:20:36 -07:00
# define _COMPONENT ACPI_UTILITIES
2005-08-05 00:44:28 -04:00
ACPI_MODULE_NAME ( " utdebug " )
2012-10-31 02:25:05 +00:00
2005-04-16 15:20:36 -07:00
# ifdef ACPI_DEBUG_OUTPUT
2012-10-31 02:25:05 +00:00
static acpi_thread_id acpi_gbl_prev_thread_id = ( acpi_thread_id ) 0xFFFFFFFF ;
2005-08-05 00:44:28 -04:00
static char * acpi_gbl_fn_entry_str = " ----Entry " ;
static char * acpi_gbl_fn_exit_str = " ----Exit- " ;
2005-04-16 15:20:36 -07:00
2005-07-29 15:15:00 -07:00
/* Local prototypes */
2005-08-05 00:44:28 -04:00
static const char * acpi_ut_trim_function_name ( const char * function_name ) ;
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_init_stack_ptr_trace
*
* PARAMETERS : None
*
* RETURN : None
*
2005-04-18 22:49:35 -04:00
* DESCRIPTION : Save the current CPU stack pointer at subsystem startup
2005-04-16 15:20:36 -07:00
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
2005-08-05 00:44:28 -04:00
void acpi_ut_init_stack_ptr_trace ( void )
2005-04-16 15:20:36 -07:00
{
2008-04-10 19:06:40 +04:00
acpi_size current_sp ;
2005-04-16 15:20:36 -07:00
2008-04-10 19:06:40 +04:00
acpi_gbl_entry_stack_pointer = & current_sp ;
2005-04-16 15:20:36 -07:00
}
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_track_stack_ptr
*
* PARAMETERS : None
*
* RETURN : None
*
2005-04-18 22:49:35 -04:00
* DESCRIPTION : Save the current CPU stack pointer
2005-04-16 15:20:36 -07:00
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
2005-08-05 00:44:28 -04:00
void acpi_ut_track_stack_ptr ( void )
2005-04-16 15:20:36 -07:00
{
2005-08-05 00:44:28 -04:00
acpi_size current_sp ;
2005-04-16 15:20:36 -07: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-16 15:20:36 -07:00
}
if ( acpi_gbl_nesting_level > acpi_gbl_deepest_nesting ) {
acpi_gbl_deepest_nesting = acpi_gbl_nesting_level ;
}
}
2005-07-29 15:15:00 -07: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 .
2012-10-31 02:25:05 +00:00
* This allows compiler macros such as __FUNCTION__ to be used
2005-07-29 15:15:00 -07:00
* with no change to the debug output .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-08-05 00:44:28 -04:00
static const char * acpi_ut_trim_function_name ( const char * function_name )
2005-07-29 15:15:00 -07:00
{
/* All Function names are longer than 4 chars, check is safe */
2005-08-15 03:42:00 -08:00
if ( * ( ACPI_CAST_PTR ( u32 , function_name ) ) = = ACPI_PREFIX_MIXED ) {
2006-10-02 00:00:00 -04:00
2005-07-29 15:15:00 -07:00
/* This is the case where the original source has not been modified */
return ( function_name + 4 ) ;
}
2005-08-15 03:42:00 -08:00
if ( * ( ACPI_CAST_PTR ( u32 , function_name ) ) = = ACPI_PREFIX_LOWER ) {
2006-10-02 00:00:00 -04:00
2005-07-29 15:15:00 -07:00
/* This is the case where the source has been 'linuxized' */
return ( function_name + 5 ) ;
}
return ( function_name ) ;
}
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
2008-12-31 03:01:23 +08:00
* FUNCTION : acpi_debug_print
2005-04-16 15:20:36 -07:00
*
2005-04-18 22:49:35 -04:00
* PARAMETERS : requested_debug_level - Requested debug print level
2005-04-16 15:20:36 -07:00
* line_number - Caller ' s line number ( for error output )
2005-07-08 00: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 09:40:10 +08:00
* format - Printf format field
2005-04-16 15:20:36 -07:00
* . . . - Optional printf arguments
*
* RETURN : None
*
* DESCRIPTION : Print error message with prefix consisting of the module name ,
* line number , and component ID .
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
2005-08-05 00:44:28 -04:00
void ACPI_INTERNAL_VAR_XFACE
2008-12-31 03:01:23 +08: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-16 15:20:36 -07:00
{
2006-10-03 00:00:00 -04:00
acpi_thread_id thread_id ;
2005-08-05 00:44:28 -04:00
va_list args ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00:00
/* Check if debug output enabled */
if ( ! ACPI_IS_DEBUG_ENABLED ( requested_debug_level , component_id ) ) {
2005-04-16 15:20:36 -07:00
return ;
}
/*
* Thread tracking and context switch notification
*/
2005-08-05 00:44:28 -04:00
thread_id = acpi_os_get_thread_id ( ) ;
2005-04-16 15:20:36 -07:00
if ( thread_id ! = acpi_gbl_prev_thread_id ) {
if ( ACPI_LV_THREADS & acpi_dbg_level ) {
2005-08-05 00:44:28 -04:00
acpi_os_printf
2010-09-15 13:55:13 +08:00
( " \n **** Context Switch from TID %u to TID %u **** \n \n " ,
( u32 ) acpi_gbl_prev_thread_id , ( u32 ) thread_id ) ;
2005-04-16 15:20:36 -07:00
}
acpi_gbl_prev_thread_id = thread_id ;
2013-11-21 12:17:20 +08:00
acpi_gbl_nesting_level = 0 ;
2005-04-16 15:20:36 -07:00
}
/*
* Display the module name , current line number , thread ID ( if requested ) ,
* current procedure nesting level , and the current procedure name
*/
2013-09-23 09:51:39 +08:00
acpi_os_printf ( " %9s-%04ld " , module_name , line_number ) ;
2005-04-16 15:20:36 -07:00
2014-01-08 13:43:12 +08:00
# ifdef ACPI_APPLICATION
2013-11-21 12:17:20 +08:00
/*
2014-01-08 13:43:12 +08:00
* For acpi_exec / iASL only , emit the thread ID and nesting level .
2013-11-21 12:17:20 +08:00
* Note : nesting level is really only useful during a single - thread
* execution . Otherwise , multiple threads will keep resetting the
* level .
*/
2005-04-16 15:20:36 -07:00
if ( ACPI_LV_THREADS & acpi_dbg_level ) {
2010-09-15 13:55:13 +08:00
acpi_os_printf ( " [%u] " , ( u32 ) thread_id ) ;
2005-04-16 15:20:36 -07:00
}
2013-11-21 12:17:20 +08:00
acpi_os_printf ( " [%02ld] " , acpi_gbl_nesting_level ) ;
# endif
acpi_os_printf ( " %-22.22s: " , acpi_ut_trim_function_name ( function_name ) ) ;
2005-04-16 15:20:36 -07:00
2005-08-05 00: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-16 15:20:36 -07:00
}
2008-12-31 03:01:23 +08:00
ACPI_EXPORT_SYMBOL ( acpi_debug_print )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
2008-12-31 03:01:23 +08:00
* FUNCTION : acpi_debug_print_raw
2005-04-16 15:20:36 -07:00
*
* PARAMETERS : requested_debug_level - Requested debug print level
* line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* format - Printf format field
2005-04-16 15:20:36 -07:00
* . . . - Optional printf arguments
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Print message with no headers . Has same interface as
2005-04-16 15:20:36 -07:00
* debug_print so that the same macros can be used .
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-08-05 00:44:28 -04:00
void ACPI_INTERNAL_VAR_XFACE
2008-12-31 03:01:23 +08: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-16 15:20:36 -07:00
{
2005-08-05 00:44:28 -04:00
va_list args ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00:00
/* Check if debug output enabled */
if ( ! ACPI_IS_DEBUG_ENABLED ( requested_debug_level , component_id ) ) {
2005-04-16 15:20:36 -07:00
return ;
}
2005-08-05 00: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-16 15:20:36 -07:00
}
2008-12-31 03:01:23 +08:00
ACPI_EXPORT_SYMBOL ( acpi_debug_print_raw )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_trace
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00:00:00 -04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_trace ( u32 line_number ,
2008-06-10 13:55:53 +08:00
const char * function_name ,
const char * module_name , u32 component_id )
2005-04-16 15:20:36 -07:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 00:44:28 -04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00: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 \n " , acpi_gbl_fn_entry_str ) ;
}
2005-04-16 15:20:36 -07:00
}
2006-10-03 00:00:00 -04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_trace )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_trace_ptr
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* pointer - Pointer to display
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_trace_ptr ( u32 line_number ,
const char * function_name ,
2008-06-10 13:55:53 +08:00
const char * module_name , u32 component_id , void * pointer )
2005-04-16 15:20:36 -07:00
{
2012-10-31 02:26:01 +00:00
2005-04-16 15:20:36 -07:00
acpi_gbl_nesting_level + + ;
2005-08-05 00:44:28 -04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00: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 %p \n " , acpi_gbl_fn_entry_str ,
pointer ) ;
}
2005-04-16 15:20:36 -07:00
}
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_trace_str
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* string - Additional string to display
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_trace_str ( u32 line_number ,
const char * function_name ,
2008-06-10 13:55:53 +08:00
const char * module_name , u32 component_id , char * string )
2005-04-16 15:20:36 -07:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 00:44:28 -04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00: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 %s \n " , acpi_gbl_fn_entry_str ,
string ) ;
}
2005-04-16 15:20:36 -07:00
}
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_trace_u32
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* integer - Integer to display
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function entry trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_trace_u32 ( u32 line_number ,
const char * function_name ,
2008-06-10 13:55:53 +08:00
const char * module_name , u32 component_id , u32 integer )
2005-04-16 15:20:36 -07:00
{
acpi_gbl_nesting_level + + ;
2005-08-05 00:44:28 -04:00
acpi_ut_track_stack_ptr ( ) ;
2005-04-16 15:20:36 -07:00
2012-12-31 00:06:10 +00: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 " ,
acpi_gbl_fn_entry_str , integer ) ;
}
2005-04-16 15:20:36 -07:00
}
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00:00:00 -04:00
* function_name - Caller ' s procedure name
* module_name - Caller ' s module name
* component_id - Caller ' s component ID
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_exit ( u32 line_number ,
2008-06-10 13:55:53 +08:00
const char * function_name ,
const char * module_name , u32 component_id )
2005-04-16 15:20:36 -07:00
{
2012-12-31 00:06:10 +00: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 \n " , acpi_gbl_fn_exit_str ) ;
}
2005-04-16 15:20:36 -07:00
2013-11-21 12:17:20 +08:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-16 15:20:36 -07:00
}
2006-10-03 00:00:00 -04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_exit )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_status_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* status - Exit status code
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level . Prints exit status also .
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_status_exit ( u32 line_number ,
const char * function_name ,
2008-06-10 13:55:53 +08:00
const char * module_name ,
u32 component_id , acpi_status status )
2005-04-16 15:20:36 -07:00
{
2012-12-31 00:06:10 +00: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 " ,
acpi_gbl_fn_exit_str ,
acpi_format_exception ( status ) ) ;
} else {
acpi_debug_print ( ACPI_LV_FUNCTIONS ,
line_number , function_name ,
module_name , component_id ,
" %s ****Exception****: %s \n " ,
acpi_gbl_fn_exit_str ,
acpi_format_exception ( status ) ) ;
}
2005-04-16 15:20:36 -07:00
}
2013-11-21 12:17:20 +08:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-16 15:20:36 -07:00
}
2006-10-03 00:00:00 -04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_status_exit )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_value_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* value - Value to be printed with exit msg
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level . Prints exit value also .
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_value_exit ( u32 line_number ,
const char * function_name ,
2010-01-21 10:06:32 +08:00
const char * module_name , u32 component_id , u64 value )
2005-04-16 15:20:36 -07:00
{
2012-12-31 00:06:10 +00: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 " ,
acpi_gbl_fn_exit_str ,
ACPI_FORMAT_UINT64 ( value ) ) ;
}
2005-04-16 15:20:36 -07:00
2013-11-21 12:17:20 +08:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-16 15:20:36 -07:00
}
2006-10-03 00:00:00 -04:00
ACPI_EXPORT_SYMBOL ( acpi_ut_value_exit )
2005-04-16 15:20:36 -07:00
2005-04-18 22:49:35 -04:00
/*******************************************************************************
2005-04-16 15:20:36 -07:00
*
* FUNCTION : acpi_ut_ptr_exit
*
* PARAMETERS : line_number - Caller ' s line number
2005-07-08 00: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 09:40:10 +08:00
* ptr - Pointer to display
2005-04-16 15:20:36 -07:00
*
* RETURN : None
*
2012-10-31 02:26:55 +00:00
* DESCRIPTION : Function exit trace . Prints only if TRACE_FUNCTIONS bit is
2005-04-16 15:20:36 -07:00
* set in debug_level . Prints exit value also .
*
2005-04-18 22:49:35 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2005-04-16 15:20:36 -07:00
void
2005-08-05 00:44:28 -04:00
acpi_ut_ptr_exit ( u32 line_number ,
const char * function_name ,
2008-06-10 13:55:53 +08:00
const char * module_name , u32 component_id , u8 * ptr )
2005-04-16 15:20:36 -07:00
{
2012-12-31 00:06:10 +00: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 %p \n " , acpi_gbl_fn_exit_str ,
ptr ) ;
}
2005-04-16 15:20:36 -07:00
2013-11-21 12:17:20 +08:00
if ( acpi_gbl_nesting_level ) {
acpi_gbl_nesting_level - - ;
}
2005-04-16 15:20:36 -07:00
}
# endif