cregit-Linux how code gets into the kernel

Release 4.11 drivers/acpi/acpica/utdebug.c

/******************************************************************************
 *
 * Module Name: utdebug - Debug print/trace routines
 *
 *****************************************************************************/

/*
 * Copyright (C) 2000 - 2017, Intel Corp.
 * 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.
 */


#define EXPORT_ACPI_INTERFACES

#include <acpi/acpi.h>
#include "accommon.h"
#include "acinterp.h"


#define _COMPONENT          ACPI_UTILITIES
ACPI_MODULE_NAME("utdebug")

#ifdef ACPI_DEBUG_OUTPUT

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-";

/*******************************************************************************
 *
 * FUNCTION:    acpi_ut_init_stack_ptr_trace
 *
 * PARAMETERS:  None
 *
 * RETURN:      None
 *
 * DESCRIPTION: Save the current CPU stack pointer at subsystem startup
 *
 ******************************************************************************/


void acpi_ut_init_stack_ptr_trace(void) { acpi_size current_sp; acpi_gbl_entry_stack_pointer = &current_sp; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)746.67%125.00%
Linus Torvalds640.00%125.00%
Robert Moore16.67%125.00%
Len Brown16.67%125.00%
Total15100.00%4100.00%

/******************************************************************************* * * FUNCTION: acpi_ut_track_stack_ptr * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Save the current CPU stack pointer * ******************************************************************************/
void acpi_ut_track_stack_ptr(void) { acpi_size current_sp; if (&current_sp < acpi_gbl_lowest_stack_pointer) { acpi_gbl_lowest_stack_pointer = &current_sp; } if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) { acpi_gbl_deepest_nesting = acpi_gbl_nesting_level; } }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds2877.78%120.00%
Linus Torvalds (pre-git)411.11%120.00%
Robert Moore25.56%120.00%
Andy Grover12.78%120.00%
Len Brown12.78%120.00%
Total36100.00%5100.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. * This allows compiler macros such as __func__ to be used * with no change to the debug output. * ******************************************************************************/
static const char *acpi_ut_trim_function_name(const char *function_name) { /* All Function names are longer than 4 chars, check is safe */ if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_MIXED) { /* This is the case where the original source has not been modified */ return (function_name + 4); } if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_LOWER) { /* This is the case where the source has been 'linuxized' */ return (function_name + 5); } return (function_name); }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore67100.00%2100.00%
Total67100.00%2100.00%

/******************************************************************************* * * FUNCTION: acpi_debug_print * * PARAMETERS: requested_debug_level - Requested debug print level * line_number - Caller's line number (for error output) * function_name - Caller's procedure name * module_name - Caller's module name * component_id - Caller's component ID * format - Printf format field * ... - Optional printf arguments * * RETURN: None * * DESCRIPTION: Print error message with prefix consisting of the module name, * line number, and component ID. * ******************************************************************************/
void ACPI_INTERNAL_VAR_XFACE acpi_debug_print(u32 requested_debug_level, u32 line_number, const char *function_name, const char *module_name, u32 component_id, const char *format, ...) { acpi_thread_id thread_id; va_list args; /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED(requested_debug_level, component_id)) { return; } /* * Thread tracking and context switch notification */ thread_id = acpi_os_get_thread_id(); if (thread_id != acpi_gbl_previous_thread_id) { if (ACPI_LV_THREADS & acpi_dbg_level) { acpi_os_printf ("\n**** Context Switch from TID %u to TID %u ****\n\n", (u32)acpi_gbl_previous_thread_id, (u32)thread_id); } acpi_gbl_previous_thread_id = thread_id; acpi_gbl_nesting_level = 0; } /* * Display the module name, current line number, thread ID (if requested), * current procedure nesting level, and the current procedure name */ acpi_os_printf("%9s-%04ld ", module_name, line_number); #ifdef ACPI_APPLICATION /* * For acpi_exec/iASL only, emit the thread ID and nesting level. * Note: nesting level is really only useful during a single-thread * execution. Otherwise, multiple threads will keep resetting the * level. */ if (ACPI_LV_THREADS & acpi_dbg_level) { acpi_os_printf("[%u] ", (u32)thread_id); } acpi_os_printf("[%02ld] ", acpi_gbl_nesting_level); #endif acpi_os_printf("%-22.22s: ", acpi_ut_trim_function_name(function_name)); va_start(args, format); acpi_os_vprintf(format, args); va_end(args); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds8349.70%16.25%
Robert Moore4828.74%1168.75%
Linus Torvalds (pre-git)2414.37%212.50%
Lin Ming116.59%16.25%
Andy Grover10.60%16.25%
Total167100.00%16100.00%

ACPI_EXPORT_SYMBOL(acpi_debug_print) /******************************************************************************* * * FUNCTION: acpi_debug_print_raw * * PARAMETERS: requested_debug_level - Requested debug print level * line_number - Caller's line number * function_name - Caller's procedure name * module_name - Caller's module name * component_id - Caller's component ID * format - Printf format field * ... - Optional printf arguments * * RETURN: None * * DESCRIPTION: Print message with no headers. Has same interface as * debug_print so that the same macros can be used. * ******************************************************************************/
void ACPI_INTERNAL_VAR_XFACE 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, ...) { va_list args; /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED(requested_debug_level, component_id)) { return; } va_start(args, format); acpi_os_vprintf(format, args); va_end(args); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds2739.71%110.00%
Robert Moore2333.82%660.00%
Linus Torvalds (pre-git)1725.00%220.00%
Andy Grover11.47%110.00%
Total68100.00%10100.00%

ACPI_EXPORT_SYMBOL(acpi_debug_print_raw) /******************************************************************************* * * FUNCTION: acpi_ut_trace * * 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 * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level * ******************************************************************************/
void acpi_ut_trace(u32 line_number, const char *function_name, const char *module_name, u32 component_id) { acpi_gbl_nesting_level++; acpi_ut_track_stack_ptr(); /* 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_function_entry_prefix); } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3053.57%666.67%
Linus Torvalds (pre-git)2035.71%222.22%
Linus Torvalds610.71%111.11%
Total56100.00%9100.00%

ACPI_EXPORT_SYMBOL(acpi_ut_trace) /******************************************************************************* * * FUNCTION: acpi_ut_trace_ptr * * 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 * pointer - Pointer to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level * ******************************************************************************/
void acpi_ut_trace_ptr(u32 line_number, const char *function_name, const char *module_name, u32 component_id, const void *pointer) { acpi_gbl_nesting_level++; acpi_ut_track_stack_ptr(); /* 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_function_entry_prefix, pointer); } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3149.21%666.67%
Linus Torvalds (pre-git)1930.16%222.22%
Linus Torvalds1320.63%111.11%
Total63100.00%9100.00%

/******************************************************************************* * * FUNCTION: acpi_ut_trace_str * * 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 - Additional string to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level * ******************************************************************************/
void acpi_ut_trace_str(u32 line_number, const char *function_name, const char *module_name, u32 component_id, const char *string) { acpi_gbl_nesting_level++; acpi_ut_track_stack_ptr(); /* 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_entry_prefix, string); } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3149.21%660.00%
Linus Torvalds (pre-git)1930.16%220.00%
Linus Torvalds1219.05%110.00%
Andy Grover11.59%110.00%
Total63100.00%10100.00%

/******************************************************************************* * * FUNCTION: acpi_ut_trace_u32 * * 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 * integer - Integer to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level * ******************************************************************************/
void acpi_ut_trace_u32(u32 line_number, const char *function_name, const char *module_name, u32 component_id, u32 integer) { acpi_gbl_nesting_level++; acpi_ut_track_stack_ptr(); /* 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_function_entry_prefix, integer); } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3049.18%666.67%
Linus Torvalds (pre-git)1931.15%222.22%
Linus Torvalds1219.67%111.11%
Total61100.00%9100.00%

/******************************************************************************* * * FUNCTION: acpi_ut_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 * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level * ******************************************************************************/
void acpi_ut_exit(u32 line_number, const char *function_name, const char *module_name, u32 component_id) { /* 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_function_exit_prefix); } if (acpi_gbl_nesting_level) { acpi_gbl_nesting_level--; } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3661.02%770.00%
Linus Torvalds (pre-git)2033.90%220.00%
Linus Torvalds35.08%110.00%
Total59100.00%10100.00%

ACPI_EXPORT_SYMBOL(acpi_ut_exit) /******************************************************************************* * * FUNCTION: acpi_ut_status_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 * status - Exit status code * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level. Prints exit status also. * ******************************************************************************/
void acpi_ut_status_exit(u32 line_number, const char *function_name, const char *module_name, u32 component_id, acpi_status status) { /* 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_function_exit_prefix, 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_function_exit_prefix, acpi_format_exception(status)); } } if (acpi_gbl_nesting_level) { acpi_gbl_nesting_level--; } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore4342.57%763.64%
Linus Torvalds3736.63%218.18%
Linus Torvalds (pre-git)2120.79%218.18%
Total101100.00%11100.00%

ACPI_EXPORT_SYMBOL(acpi_ut_status_exit) /******************************************************************************* * * FUNCTION: acpi_ut_value_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 * value - Value to be printed with exit msg * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in debug_level. Prints exit value also. * ******************************************************************************/
void acpi_ut_value_exit(u32 line_number, const char *function_name, const char *module_name, u32 component_id, u64 value) { /* 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_function_exit_prefix, ACPI_FORMAT_UINT64(value)); } if (acpi_gbl_nesting_level) { acpi_gbl_nesting_level--; } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3755.22%857.14%
Linus Torvalds2131.34%321.43%
Linus Torvalds (pre-git)811.94%214.29%
Len Brown11.49%17.14%
Total67100.00%14100.00%

ACPI_EXPORT_SYMBOL(acpi_ut_value_exit) /******************************************************************************* * * FUNCTION: acpi_ut_ptr_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 * ptr - Pointer 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_ptr_exit(u32 line_number, const char *function_name, const char *module_name, u32 component_id, u8 *ptr) { /* 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_function_exit_prefix, ptr); } if (acpi_gbl_nesting_level) { acpi_gbl_nesting_level--; } }

Contributors

PersonTokensPropCommitsCommitProp
Robert Moore3655.38%777.78%
Linus Torvalds1624.62%111.11%
Linus Torvalds (pre-git)1320.00%111.11%
Total65100.00%9100.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--; } }

Contributors

PersonTokensPropCommitsCommitProp
Jung-uk Kim66100.00%1100.00%
Total66100.00%1100.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); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Lv Zheng49100.00%1100.00%
Total49100.00%1100.00%

ACPI_EXPORT_SYMBOL(acpi_trace_point) #endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Robert Moore44840.80%1945.24%
Linus Torvalds27925.41%37.14%
Linus Torvalds (pre-git)19617.85%24.76%
Jung-uk Kim676.10%12.38%
Lv Zheng666.01%49.52%
Len Brown171.55%511.90%
Andy Grover111.00%511.90%
Lin Ming111.00%12.38%
Paul Gortmaker20.18%12.38%
Patrick Mochel10.09%12.38%
Total1098100.00%42100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.