utdebug.c revision 306536
1132179Sdavidxu/****************************************************************************** 2132179Sdavidxu * 3132179Sdavidxu * Module Name: utdebug - Debug print/trace routines 4132179Sdavidxu * 5132179Sdavidxu *****************************************************************************/ 6132179Sdavidxu 7132179Sdavidxu/* 8132179Sdavidxu * Copyright (C) 2000 - 2016, Intel Corp. 9132179Sdavidxu * All rights reserved. 10132179Sdavidxu * 11132179Sdavidxu * Redistribution and use in source and binary forms, with or without 12132179Sdavidxu * modification, are permitted provided that the following conditions 13132179Sdavidxu * are met: 14132179Sdavidxu * 1. Redistributions of source code must retain the above copyright 15132179Sdavidxu * notice, this list of conditions, and the following disclaimer, 16132179Sdavidxu * without modification. 17132179Sdavidxu * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18132179Sdavidxu * substantially similar to the "NO WARRANTY" disclaimer below 19132179Sdavidxu * ("Disclaimer") and any redistribution must be conditioned upon 20132179Sdavidxu * including a substantially similar Disclaimer requirement for further 21132179Sdavidxu * binary redistribution. 22134147Sdavidxu * 3. Neither the names of the above-listed copyright holders nor the names 23134147Sdavidxu * of any contributors may be used to endorse or promote products derived 24134147Sdavidxu * from this software without specific prior written permission. 25155379Sdavidxu * 26132179Sdavidxu * Alternatively, this software may be distributed under the terms of the 27132179Sdavidxu * GNU General Public License ("GPL") version 2 as published by the Free 28132179Sdavidxu * Software Foundation. 29132179Sdavidxu * 30134147Sdavidxu * NO WARRANTY 31132179Sdavidxu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32134147Sdavidxu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33134147Sdavidxu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34134147Sdavidxu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35132179Sdavidxu * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36132179Sdavidxu * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37134147Sdavidxu * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38134147Sdavidxu * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39132179Sdavidxu * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40132179Sdavidxu * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41132179Sdavidxu * POSSIBILITY OF SUCH DAMAGES. 42132179Sdavidxu */ 43133345Sdavidxu 44132179Sdavidxu#define EXPORT_ACPI_INTERFACES 45218822Sdim 46218822Sdim#include <contrib/dev/acpica/include/acpi.h> 47218822Sdim#include <contrib/dev/acpica/include/accommon.h> 48218822Sdim#include <contrib/dev/acpica/include/acinterp.h> 49132179Sdavidxu 50132179Sdavidxu#define _COMPONENT ACPI_UTILITIES 51132179Sdavidxu ACPI_MODULE_NAME ("utdebug") 52132179Sdavidxu 53132179Sdavidxu 54132179Sdavidxu#ifdef ACPI_DEBUG_OUTPUT 55132179Sdavidxu 56132179Sdavidxustatic ACPI_THREAD_ID AcpiGbl_PreviousThreadId = (ACPI_THREAD_ID) 0xFFFFFFFF; 57134147Sdavidxustatic const char *AcpiGbl_FunctionEntryPrefix = "----Entry"; 58134147Sdavidxustatic const char *AcpiGbl_FunctionExitPrefix = "----Exit-"; 59132179Sdavidxu 60132179Sdavidxu 61134152Sdavidxu/******************************************************************************* 62134147Sdavidxu * 63134147Sdavidxu * FUNCTION: AcpiUtInitStackPtrTrace 64132179Sdavidxu * 65134147Sdavidxu * PARAMETERS: None 66134147Sdavidxu * 67134147Sdavidxu * RETURN: None 68134147Sdavidxu * 69132179Sdavidxu * DESCRIPTION: Save the current CPU stack pointer at subsystem startup 70132179Sdavidxu * 71132179Sdavidxu ******************************************************************************/ 72134147Sdavidxu 73134147Sdavidxuvoid 74134147SdavidxuAcpiUtInitStackPtrTrace ( 75132179Sdavidxu void) 76134147Sdavidxu{ 77132179Sdavidxu ACPI_SIZE CurrentSp; 78134147Sdavidxu 79134147Sdavidxu 80134147Sdavidxu AcpiGbl_EntryStackPointer = &CurrentSp; 81132179Sdavidxu} 82132179Sdavidxu 83132179Sdavidxu 84132179Sdavidxu/******************************************************************************* 85132179Sdavidxu * 86132179Sdavidxu * FUNCTION: AcpiUtTrackStackPtr 87132179Sdavidxu * 88132179Sdavidxu * PARAMETERS: None 89132179Sdavidxu * 90132179Sdavidxu * RETURN: None 91132179Sdavidxu * 92132179Sdavidxu * DESCRIPTION: Save the current CPU stack pointer 93132179Sdavidxu * 94132179Sdavidxu ******************************************************************************/ 95132179Sdavidxu 96132179Sdavidxuvoid 97132179SdavidxuAcpiUtTrackStackPtr ( 98132179Sdavidxu void) 99132179Sdavidxu{ 100134147Sdavidxu ACPI_SIZE CurrentSp; 101132179Sdavidxu 102132179Sdavidxu 103132179Sdavidxu if (&CurrentSp < AcpiGbl_LowestStackPointer) 104132179Sdavidxu { 105132179Sdavidxu AcpiGbl_LowestStackPointer = &CurrentSp; 106132179Sdavidxu } 107132179Sdavidxu 108132179Sdavidxu if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting) 109132179Sdavidxu { 110132179Sdavidxu AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel; 111132179Sdavidxu } 112132179Sdavidxu} 113132179Sdavidxu 114132179Sdavidxu 115132179Sdavidxu/******************************************************************************* 116132179Sdavidxu * 117132179Sdavidxu * FUNCTION: AcpiUtTrimFunctionName 118146818Sdfr * 119146818Sdfr * PARAMETERS: FunctionName - Ascii string containing a procedure name 120146818Sdfr * 121146818Sdfr * RETURN: Updated pointer to the function name 122132179Sdavidxu * 123132179Sdavidxu * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. 124132179Sdavidxu * This allows compiler macros such as __FUNCTION__ to be used 125132179Sdavidxu * with no change to the debug output. 126146818Sdfr * 127146818Sdfr ******************************************************************************/ 128146818Sdfr 129146818Sdfrstatic const char * 130132179SdavidxuAcpiUtTrimFunctionName ( 131132179Sdavidxu const char *FunctionName) 132132179Sdavidxu{ 133132179Sdavidxu 134132179Sdavidxu /* All Function names are longer than 4 chars, check is safe */ 135132179Sdavidxu 136132179Sdavidxu if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_MIXED) 137132179Sdavidxu { 138132179Sdavidxu /* This is the case where the original source has not been modified */ 139132179Sdavidxu 140133345Sdavidxu return (FunctionName + 4); 141133345Sdavidxu } 142133345Sdavidxu 143132179Sdavidxu if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_LOWER) 144132179Sdavidxu { 145132179Sdavidxu /* This is the case where the source has been 'linuxized' */ 146144923Sdavidxu 147144923Sdavidxu return (FunctionName + 5); 148144923Sdavidxu } 149144923Sdavidxu 150144923Sdavidxu return (FunctionName); 151132179Sdavidxu} 152132179Sdavidxu 153133345Sdavidxu 154144923Sdavidxu/******************************************************************************* 155144923Sdavidxu * 156144923Sdavidxu * FUNCTION: AcpiDebugPrint 157132179Sdavidxu * 158132179Sdavidxu * PARAMETERS: RequestedDebugLevel - Requested debug print level 159132179Sdavidxu * LineNumber - Caller's line number (for error output) 160132179Sdavidxu * FunctionName - Caller's procedure name 161132179Sdavidxu * ModuleName - Caller's module name 162132179Sdavidxu * ComponentId - Caller's component ID 163132179Sdavidxu * Format - Printf format field 164132179Sdavidxu * ... - Optional printf arguments 165132179Sdavidxu * 166132179Sdavidxu * RETURN: None 167132179Sdavidxu * 168132179Sdavidxu * DESCRIPTION: Print error message with prefix consisting of the module name, 169132179Sdavidxu * line number, and component ID. 170132179Sdavidxu * 171132179Sdavidxu ******************************************************************************/ 172132179Sdavidxu 173132179Sdavidxuvoid ACPI_INTERNAL_VAR_XFACE 174132179SdavidxuAcpiDebugPrint ( 175132179Sdavidxu UINT32 RequestedDebugLevel, 176132179Sdavidxu UINT32 LineNumber, 177132179Sdavidxu const char *FunctionName, 178132179Sdavidxu const char *ModuleName, 179132179Sdavidxu UINT32 ComponentId, 180132179Sdavidxu const char *Format, 181132179Sdavidxu ...) 182132179Sdavidxu{ 183132179Sdavidxu ACPI_THREAD_ID ThreadId; 184132179Sdavidxu va_list args; 185132179Sdavidxu 186132179Sdavidxu 187132179Sdavidxu /* Check if debug output enabled */ 188132179Sdavidxu 189132179Sdavidxu if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId)) 190132179Sdavidxu { 191132179Sdavidxu return; 192132179Sdavidxu } 193132179Sdavidxu 194132179Sdavidxu /* 195132179Sdavidxu * Thread tracking and context switch notification 196132179Sdavidxu */ 197132179Sdavidxu ThreadId = AcpiOsGetThreadId (); 198132179Sdavidxu if (ThreadId != AcpiGbl_PreviousThreadId) 199132179Sdavidxu { 200132179Sdavidxu if (ACPI_LV_THREADS & AcpiDbgLevel) 201132179Sdavidxu { 202132179Sdavidxu AcpiOsPrintf ( 203132179Sdavidxu "\n**** Context Switch from TID %u to TID %u ****\n\n", 204132179Sdavidxu (UINT32) AcpiGbl_PreviousThreadId, (UINT32) ThreadId); 205132179Sdavidxu } 206132179Sdavidxu 207132179Sdavidxu AcpiGbl_PreviousThreadId = ThreadId; 208132179Sdavidxu AcpiGbl_NestingLevel = 0; 209132179Sdavidxu } 210132179Sdavidxu 211132179Sdavidxu /* 212132179Sdavidxu * Display the module name, current line number, thread ID (if requested), 213132179Sdavidxu * current procedure nesting level, and the current procedure name 214132179Sdavidxu */ 215132179Sdavidxu AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber); 216132179Sdavidxu 217132179Sdavidxu#ifdef ACPI_APPLICATION 218132179Sdavidxu /* 219132179Sdavidxu * For AcpiExec/iASL only, emit the thread ID and nesting level. 220132179Sdavidxu * Note: nesting level is really only useful during a single-thread 221132179Sdavidxu * execution. Otherwise, multiple threads will keep resetting the 222132179Sdavidxu * level. 223132179Sdavidxu */ 224132179Sdavidxu if (ACPI_LV_THREADS & AcpiDbgLevel) 225132179Sdavidxu { 226132179Sdavidxu AcpiOsPrintf ("[%u] ", (UINT32) ThreadId); 227132179Sdavidxu } 228132179Sdavidxu 229132179Sdavidxu AcpiOsPrintf ("[%02ld] ", AcpiGbl_NestingLevel); 230132179Sdavidxu#endif 231132179Sdavidxu 232132179Sdavidxu AcpiOsPrintf ("%-22.22s: ", AcpiUtTrimFunctionName (FunctionName)); 233132179Sdavidxu 234132179Sdavidxu va_start (args, Format); 235132179Sdavidxu AcpiOsVprintf (Format, args); 236132179Sdavidxu va_end (args); 237132179Sdavidxu} 238132179Sdavidxu 239132179SdavidxuACPI_EXPORT_SYMBOL (AcpiDebugPrint) 240132179Sdavidxu 241132179Sdavidxu 242132179Sdavidxu/******************************************************************************* 243132179Sdavidxu * 244132179Sdavidxu * FUNCTION: AcpiDebugPrintRaw 245132179Sdavidxu * 246132179Sdavidxu * PARAMETERS: RequestedDebugLevel - Requested debug print level 247132179Sdavidxu * LineNumber - Caller's line number 248132179Sdavidxu * FunctionName - Caller's procedure name 249132179Sdavidxu * ModuleName - Caller's module name 250132179Sdavidxu * ComponentId - Caller's component ID 251132179Sdavidxu * Format - Printf format field 252144923Sdavidxu * ... - Optional printf arguments 253132179Sdavidxu * 254132179Sdavidxu * RETURN: None 255132179Sdavidxu * 256132179Sdavidxu * DESCRIPTION: Print message with no headers. Has same interface as 257132179Sdavidxu * DebugPrint so that the same macros can be used. 258134147Sdavidxu * 259132179Sdavidxu ******************************************************************************/ 260144923Sdavidxu 261134147Sdavidxuvoid ACPI_INTERNAL_VAR_XFACE 262134147SdavidxuAcpiDebugPrintRaw ( 263144923Sdavidxu UINT32 RequestedDebugLevel, 264134147Sdavidxu UINT32 LineNumber, 265134147Sdavidxu const char *FunctionName, 266144923Sdavidxu const char *ModuleName, 267134147Sdavidxu UINT32 ComponentId, 268132179Sdavidxu const char *Format, 269132179Sdavidxu ...) 270132179Sdavidxu{ 271132179Sdavidxu va_list args; 272132179Sdavidxu 273132179Sdavidxu 274134147Sdavidxu /* Check if debug output enabled */ 275134147Sdavidxu 276134147Sdavidxu if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId)) 277134147Sdavidxu { 278134147Sdavidxu return; 279134147Sdavidxu } 280134147Sdavidxu 281134147Sdavidxu va_start (args, Format); 282134147Sdavidxu AcpiOsVprintf (Format, args); 283134147Sdavidxu va_end (args); 284134147Sdavidxu} 285134147Sdavidxu 286132179SdavidxuACPI_EXPORT_SYMBOL (AcpiDebugPrintRaw) 287132179Sdavidxu 288132179Sdavidxu 289132179Sdavidxu/******************************************************************************* 290134147Sdavidxu * 291132179Sdavidxu * FUNCTION: AcpiUtTrace 292134147Sdavidxu * 293134147Sdavidxu * PARAMETERS: LineNumber - Caller's line number 294134147Sdavidxu * FunctionName - Caller's procedure name 295134147Sdavidxu * ModuleName - Caller's module name 296134147Sdavidxu * ComponentId - Caller's component ID 297134147Sdavidxu * 298132179Sdavidxu * RETURN: None 299132179Sdavidxu * 300132179Sdavidxu * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 301132179Sdavidxu * set in DebugLevel 302132179Sdavidxu * 303132179Sdavidxu ******************************************************************************/ 304132179Sdavidxu 305132179Sdavidxuvoid 306132179SdavidxuAcpiUtTrace ( 307144923Sdavidxu UINT32 LineNumber, 308144923Sdavidxu const char *FunctionName, 309132179Sdavidxu const char *ModuleName, 310132179Sdavidxu UINT32 ComponentId) 311132179Sdavidxu{ 312132179Sdavidxu 313132179Sdavidxu AcpiGbl_NestingLevel++; 314144923Sdavidxu AcpiUtTrackStackPtr (); 315132179Sdavidxu 316132179Sdavidxu /* Check if enabled up-front for performance */ 317144923Sdavidxu 318132179Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 319137731Sdavidxu { 320132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 321132179Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 322144923Sdavidxu "%s\n", AcpiGbl_FunctionEntryPrefix); 323144923Sdavidxu } 324144923Sdavidxu} 325144923Sdavidxu 326144923SdavidxuACPI_EXPORT_SYMBOL (AcpiUtTrace) 327144923Sdavidxu 328144923Sdavidxu 329144923Sdavidxu/******************************************************************************* 330144923Sdavidxu * 331144923Sdavidxu * FUNCTION: AcpiUtTracePtr 332144923Sdavidxu * 333144923Sdavidxu * PARAMETERS: LineNumber - Caller's line number 334144923Sdavidxu * FunctionName - Caller's procedure name 335155379Sdavidxu * ModuleName - Caller's module name 336155379Sdavidxu * ComponentId - Caller's component ID 337144923Sdavidxu * Pointer - Pointer to display 338144923Sdavidxu * 339144923Sdavidxu * RETURN: None 340144923Sdavidxu * 341144923Sdavidxu * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 342132179Sdavidxu * set in DebugLevel 343144923Sdavidxu * 344144923Sdavidxu ******************************************************************************/ 345144923Sdavidxu 346144923Sdavidxuvoid 347144923SdavidxuAcpiUtTracePtr ( 348144923Sdavidxu UINT32 LineNumber, 349144923Sdavidxu const char *FunctionName, 350144923Sdavidxu const char *ModuleName, 351144923Sdavidxu UINT32 ComponentId, 352144923Sdavidxu const void *Pointer) 353144923Sdavidxu{ 354144923Sdavidxu 355144923Sdavidxu AcpiGbl_NestingLevel++; 356144923Sdavidxu AcpiUtTrackStackPtr (); 357144923Sdavidxu 358144923Sdavidxu /* Check if enabled up-front for performance */ 359144923Sdavidxu 360144923Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 361144923Sdavidxu { 362144923Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 363144923Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 364144923Sdavidxu "%s %p\n", AcpiGbl_FunctionEntryPrefix, Pointer); 365144923Sdavidxu } 366144923Sdavidxu} 367144923Sdavidxu 368144923Sdavidxu 369144923Sdavidxu/******************************************************************************* 370144923Sdavidxu * 371144923Sdavidxu * FUNCTION: AcpiUtTraceStr 372144923Sdavidxu * 373144923Sdavidxu * PARAMETERS: LineNumber - Caller's line number 374144923Sdavidxu * FunctionName - Caller's procedure name 375144923Sdavidxu * ModuleName - Caller's module name 376144923Sdavidxu * ComponentId - Caller's component ID 377144923Sdavidxu * String - Additional string to display 378144923Sdavidxu * 379144923Sdavidxu * RETURN: None 380144923Sdavidxu * 381144923Sdavidxu * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 382144923Sdavidxu * set in DebugLevel 383144923Sdavidxu * 384144923Sdavidxu ******************************************************************************/ 385144923Sdavidxu 386144923Sdavidxuvoid 387144923SdavidxuAcpiUtTraceStr ( 388144923Sdavidxu UINT32 LineNumber, 389144923Sdavidxu const char *FunctionName, 390144923Sdavidxu const char *ModuleName, 391144923Sdavidxu UINT32 ComponentId, 392144923Sdavidxu const char *String) 393144923Sdavidxu{ 394144923Sdavidxu 395144923Sdavidxu AcpiGbl_NestingLevel++; 396144923Sdavidxu AcpiUtTrackStackPtr (); 397144923Sdavidxu 398144923Sdavidxu /* Check if enabled up-front for performance */ 399144923Sdavidxu 400144923Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 401144923Sdavidxu { 402144923Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 403144923Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 404144923Sdavidxu "%s %s\n", AcpiGbl_FunctionEntryPrefix, String); 405144923Sdavidxu } 406144923Sdavidxu} 407144923Sdavidxu 408144923Sdavidxu 409134147Sdavidxu/******************************************************************************* 410134147Sdavidxu * 411134147Sdavidxu * FUNCTION: AcpiUtTraceU32 412134147Sdavidxu * 413144923Sdavidxu * PARAMETERS: LineNumber - Caller's line number 414144923Sdavidxu * FunctionName - Caller's procedure name 415134147Sdavidxu * ModuleName - Caller's module name 416134147Sdavidxu * ComponentId - Caller's component ID 417134147Sdavidxu * Integer - Integer to display 418134147Sdavidxu * 419134147Sdavidxu * RETURN: None 420134147Sdavidxu * 421134147Sdavidxu * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 422144923Sdavidxu * set in DebugLevel 423144923Sdavidxu * 424134147Sdavidxu ******************************************************************************/ 425134147Sdavidxu 426134147Sdavidxuvoid 427134147SdavidxuAcpiUtTraceU32 ( 428134147Sdavidxu UINT32 LineNumber, 429134147Sdavidxu const char *FunctionName, 430134147Sdavidxu const char *ModuleName, 431134147Sdavidxu UINT32 ComponentId, 432134147Sdavidxu UINT32 Integer) 433215679Sattilio{ 434215679Sattilio 435215679Sattilio AcpiGbl_NestingLevel++; 436215679Sattilio AcpiUtTrackStackPtr (); 437215679Sattilio 438215679Sattilio /* Check if enabled up-front for performance */ 439215679Sattilio 440215679Sattilio if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 441215679Sattilio { 442215679Sattilio AcpiDebugPrint (ACPI_LV_FUNCTIONS, 443215679Sattilio LineNumber, FunctionName, ModuleName, ComponentId, 444215679Sattilio "%s %08X\n", AcpiGbl_FunctionEntryPrefix, Integer); 445215679Sattilio } 446215679Sattilio} 447215679Sattilio 448215679Sattilio 449215679Sattilio/******************************************************************************* 450215679Sattilio * 451215679Sattilio * FUNCTION: AcpiUtExit 452215679Sattilio * 453215679Sattilio * PARAMETERS: LineNumber - Caller's line number 454215679Sattilio * FunctionName - Caller's procedure name 455215679Sattilio * ModuleName - Caller's module name 456215679Sattilio * ComponentId - Caller's component ID 457215679Sattilio * 458215679Sattilio * RETURN: None 459215679Sattilio * 460215679Sattilio * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 461215679Sattilio * set in DebugLevel 462215679Sattilio * 463215679Sattilio ******************************************************************************/ 464215679Sattilio 465215679Sattiliovoid 466215679SattilioAcpiUtExit ( 467215679Sattilio UINT32 LineNumber, 468215679Sattilio const char *FunctionName, 469215679Sattilio const char *ModuleName, 470215679Sattilio UINT32 ComponentId) 471215679Sattilio{ 472215679Sattilio 473134147Sdavidxu /* Check if enabled up-front for performance */ 474132179Sdavidxu 475132179Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 476132179Sdavidxu { 477132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 478134147Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 479132179Sdavidxu "%s\n", AcpiGbl_FunctionExitPrefix); 480132179Sdavidxu } 481132179Sdavidxu 482134147Sdavidxu if (AcpiGbl_NestingLevel) 483132179Sdavidxu { 484132179Sdavidxu AcpiGbl_NestingLevel--; 485134147Sdavidxu } 486132179Sdavidxu} 487132179Sdavidxu 488132179SdavidxuACPI_EXPORT_SYMBOL (AcpiUtExit) 489132179Sdavidxu 490132179Sdavidxu 491134147Sdavidxu/******************************************************************************* 492134147Sdavidxu * 493134147Sdavidxu * FUNCTION: AcpiUtStatusExit 494134152Sdavidxu * 495134152Sdavidxu * PARAMETERS: LineNumber - Caller's line number 496134147Sdavidxu * FunctionName - Caller's procedure name 497132179Sdavidxu * ModuleName - Caller's module name 498132179Sdavidxu * ComponentId - Caller's component ID 499132179Sdavidxu * Status - Exit status code 500132179Sdavidxu * 501132179Sdavidxu * RETURN: None 502132179Sdavidxu * 503132179Sdavidxu * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 504132179Sdavidxu * set in DebugLevel. Prints exit status also. 505132179Sdavidxu * 506132179Sdavidxu ******************************************************************************/ 507132179Sdavidxu 508132179Sdavidxuvoid 509132179SdavidxuAcpiUtStatusExit ( 510132179Sdavidxu UINT32 LineNumber, 511132179Sdavidxu const char *FunctionName, 512132179Sdavidxu const char *ModuleName, 513132179Sdavidxu UINT32 ComponentId, 514134147Sdavidxu ACPI_STATUS Status) 515132179Sdavidxu{ 516132179Sdavidxu 517132179Sdavidxu /* Check if enabled up-front for performance */ 518132179Sdavidxu 519134147Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 520132179Sdavidxu { 521134147Sdavidxu if (ACPI_SUCCESS (Status)) 522134147Sdavidxu { 523132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 524132179Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 525134147Sdavidxu "%s %s\n", AcpiGbl_FunctionExitPrefix, 526134147Sdavidxu AcpiFormatException (Status)); 527134147Sdavidxu } 528134147Sdavidxu else 529132179Sdavidxu { 530132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 531132179Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 532132179Sdavidxu "%s ****Exception****: %s\n", AcpiGbl_FunctionExitPrefix, 533132179Sdavidxu AcpiFormatException (Status)); 534132179Sdavidxu } 535132179Sdavidxu } 536132179Sdavidxu 537132179Sdavidxu if (AcpiGbl_NestingLevel) 538132179Sdavidxu { 539132179Sdavidxu AcpiGbl_NestingLevel--; 540132179Sdavidxu } 541132179Sdavidxu} 542132179Sdavidxu 543132179SdavidxuACPI_EXPORT_SYMBOL (AcpiUtStatusExit) 544132179Sdavidxu 545134147Sdavidxu 546134147Sdavidxu/******************************************************************************* 547132179Sdavidxu * 548132179Sdavidxu * FUNCTION: AcpiUtValueExit 549134147Sdavidxu * 550134147Sdavidxu * PARAMETERS: LineNumber - Caller's line number 551132179Sdavidxu * FunctionName - Caller's procedure name 552134147Sdavidxu * ModuleName - Caller's module name 553134147Sdavidxu * ComponentId - Caller's component ID 554134147Sdavidxu * Value - Value to be printed with exit msg 555132179Sdavidxu * 556134147Sdavidxu * RETURN: None 557134147Sdavidxu * 558134147Sdavidxu * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 559134147Sdavidxu * set in DebugLevel. Prints exit value also. 560134147Sdavidxu * 561134147Sdavidxu ******************************************************************************/ 562134147Sdavidxu 563134147Sdavidxuvoid 564134147SdavidxuAcpiUtValueExit ( 565134147Sdavidxu UINT32 LineNumber, 566132179Sdavidxu const char *FunctionName, 567132179Sdavidxu const char *ModuleName, 568132179Sdavidxu UINT32 ComponentId, 569132179Sdavidxu UINT64 Value) 570132179Sdavidxu{ 571134147Sdavidxu 572134147Sdavidxu /* Check if enabled up-front for performance */ 573134147Sdavidxu 574134147Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 575134147Sdavidxu { 576134147Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 577134147Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 578134147Sdavidxu "%s %8.8X%8.8X\n", AcpiGbl_FunctionExitPrefix, 579134147Sdavidxu ACPI_FORMAT_UINT64 (Value)); 580132179Sdavidxu } 581132179Sdavidxu 582132179Sdavidxu if (AcpiGbl_NestingLevel) 583132179Sdavidxu { 584132179Sdavidxu AcpiGbl_NestingLevel--; 585132179Sdavidxu } 586132179Sdavidxu} 587133345Sdavidxu 588133345SdavidxuACPI_EXPORT_SYMBOL (AcpiUtValueExit) 589134147Sdavidxu 590133345Sdavidxu 591132179Sdavidxu/******************************************************************************* 592132179Sdavidxu * 593132179Sdavidxu * FUNCTION: AcpiUtPtrExit 594132179Sdavidxu * 595132179Sdavidxu * PARAMETERS: LineNumber - Caller's line number 596133345Sdavidxu * FunctionName - Caller's procedure name 597133345Sdavidxu * ModuleName - Caller's module name 598134147Sdavidxu * ComponentId - Caller's component ID 599133345Sdavidxu * Ptr - Pointer to display 600132179Sdavidxu * 601132179Sdavidxu * RETURN: None 602132179Sdavidxu * 603132179Sdavidxu * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 604132179Sdavidxu * set in DebugLevel. Prints exit value also. 605132179Sdavidxu * 606132179Sdavidxu ******************************************************************************/ 607132179Sdavidxu 608132179Sdavidxuvoid 609132179SdavidxuAcpiUtPtrExit ( 610132179Sdavidxu UINT32 LineNumber, 611134147Sdavidxu const char *FunctionName, 612132179Sdavidxu const char *ModuleName, 613134147Sdavidxu UINT32 ComponentId, 614132179Sdavidxu UINT8 *Ptr) 615132179Sdavidxu{ 616132179Sdavidxu 617132179Sdavidxu /* Check if enabled up-front for performance */ 618132179Sdavidxu 619132179Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 620132179Sdavidxu { 621132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 622132179Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 623132179Sdavidxu "%s %p\n", AcpiGbl_FunctionExitPrefix, Ptr); 624132179Sdavidxu } 625132179Sdavidxu 626132179Sdavidxu if (AcpiGbl_NestingLevel) 627132179Sdavidxu { 628132179Sdavidxu AcpiGbl_NestingLevel--; 629132179Sdavidxu } 630132179Sdavidxu} 631132179Sdavidxu 632132179Sdavidxu 633132179Sdavidxu/******************************************************************************* 634132179Sdavidxu * 635132179Sdavidxu * FUNCTION: AcpiUtStrExit 636134152Sdavidxu * 637134152Sdavidxu * PARAMETERS: LineNumber - Caller's line number 638134152Sdavidxu * FunctionName - Caller's procedure name 639134152Sdavidxu * ModuleName - Caller's module name 640134152Sdavidxu * ComponentId - Caller's component ID 641134152Sdavidxu * String - String to display 642132179Sdavidxu * 643132179Sdavidxu * RETURN: None 644132179Sdavidxu * 645132179Sdavidxu * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 646132179Sdavidxu * set in DebugLevel. Prints exit value also. 647132179Sdavidxu * 648132179Sdavidxu ******************************************************************************/ 649132179Sdavidxu 650132179Sdavidxuvoid 651132179SdavidxuAcpiUtStrExit ( 652132179Sdavidxu UINT32 LineNumber, 653132179Sdavidxu const char *FunctionName, 654132179Sdavidxu const char *ModuleName, 655132179Sdavidxu UINT32 ComponentId, 656132179Sdavidxu const char *String) 657132179Sdavidxu{ 658132179Sdavidxu 659132179Sdavidxu /* Check if enabled up-front for performance */ 660132179Sdavidxu 661132179Sdavidxu if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) 662132179Sdavidxu { 663132179Sdavidxu AcpiDebugPrint (ACPI_LV_FUNCTIONS, 664132179Sdavidxu LineNumber, FunctionName, ModuleName, ComponentId, 665132179Sdavidxu "%s %s\n", AcpiGbl_FunctionExitPrefix, String); 666132179Sdavidxu } 667132179Sdavidxu 668132179Sdavidxu if (AcpiGbl_NestingLevel) 669132179Sdavidxu { 670132179Sdavidxu AcpiGbl_NestingLevel--; 671132179Sdavidxu } 672132179Sdavidxu} 673132179Sdavidxu 674132179Sdavidxu 675132179Sdavidxu/******************************************************************************* 676132179Sdavidxu * 677132179Sdavidxu * FUNCTION: AcpiTracePoint 678132179Sdavidxu * 679132179Sdavidxu * PARAMETERS: Type - Trace event type 680132179Sdavidxu * Begin - TRUE if before execution 681132179Sdavidxu * Aml - Executed AML address 682132179Sdavidxu * Pathname - Object path 683132179Sdavidxu * Pointer - Pointer to the related object 684132179Sdavidxu * 685132179Sdavidxu * RETURN: None 686132179Sdavidxu * 687132179Sdavidxu * DESCRIPTION: Interpreter execution trace. 688132179Sdavidxu * 689132179Sdavidxu ******************************************************************************/ 690132179Sdavidxu 691132179Sdavidxuvoid 692132179SdavidxuAcpiTracePoint ( 693132179Sdavidxu ACPI_TRACE_EVENT_TYPE Type, 694132179Sdavidxu BOOLEAN Begin, 695132179Sdavidxu UINT8 *Aml, 696132179Sdavidxu char *Pathname) 697132179Sdavidxu{ 698144923Sdavidxu 699144923Sdavidxu ACPI_FUNCTION_ENTRY (); 700144923Sdavidxu 701144923Sdavidxu AcpiExTracePoint (Type, Begin, Aml, Pathname); 702144923Sdavidxu 703144923Sdavidxu#ifdef ACPI_USE_SYSTEM_TRACER 704144923Sdavidxu AcpiOsTracePoint (Type, Begin, Aml, Pathname); 705144923Sdavidxu#endif 706144923Sdavidxu} 707144923Sdavidxu 708144923SdavidxuACPI_EXPORT_SYMBOL (AcpiTracePoint) 709144923Sdavidxu 710144923Sdavidxu#endif 711144923Sdavidxu 712144923Sdavidxu 713144923Sdavidxu#ifdef ACPI_APPLICATION 714144923Sdavidxu/******************************************************************************* 715144923Sdavidxu * 716145960Sdavidxu * FUNCTION: AcpiLogError 717145960Sdavidxu * 718144923Sdavidxu * PARAMETERS: Format - Printf format field 719144923Sdavidxu * ... - Optional printf arguments 720144923Sdavidxu * 721144923Sdavidxu * RETURN: None 722144923Sdavidxu * 723144923Sdavidxu * DESCRIPTION: Print error message to the console, used by applications. 724144923Sdavidxu * 725144923Sdavidxu ******************************************************************************/ 726144923Sdavidxu 727144923Sdavidxuvoid ACPI_INTERNAL_VAR_XFACE 728144923SdavidxuAcpiLogError ( 729144923Sdavidxu const char *Format, 730144923Sdavidxu ...) 731144923Sdavidxu{ 732144923Sdavidxu va_list Args; 733144923Sdavidxu 734144923Sdavidxu va_start (Args, Format); 735144923Sdavidxu (void) AcpiUtFileVprintf (ACPI_FILE_ERR, Format, Args); 736144923Sdavidxu va_end (Args); 737144923Sdavidxu} 738144923Sdavidxu 739144923SdavidxuACPI_EXPORT_SYMBOL (AcpiLogError) 740144923Sdavidxu#endif 741144923Sdavidxu