/******************************************************************************1*2* Name: acoutput.h -- debug output3*4*****************************************************************************/56/*7* Copyright (C) 2000 - 2011, Intel Corp.8* All rights reserved.9*10* Redistribution and use in source and binary forms, with or without11* modification, are permitted provided that the following conditions12* are met:13* 1. Redistributions of source code must retain the above copyright14* notice, this list of conditions, and the following disclaimer,15* without modification.16* 2. Redistributions in binary form must reproduce at minimum a disclaimer17* substantially similar to the "NO WARRANTY" disclaimer below18* ("Disclaimer") and any redistribution must be conditioned upon19* including a substantially similar Disclaimer requirement for further20* binary redistribution.21* 3. Neither the names of the above-listed copyright holders nor the names22* of any contributors may be used to endorse or promote products derived23* from this software without specific prior written permission.24*25* Alternatively, this software may be distributed under the terms of the26* GNU General Public License ("GPL") version 2 as published by the Free27* Software Foundation.28*29* NO WARRANTY30* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS31* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT32* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR33* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT34* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL35* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS36* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)37* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,38* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING39* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE40* POSSIBILITY OF SUCH DAMAGES.41*/4243#ifndef __ACOUTPUT_H__44#define __ACOUTPUT_H__4546/*47* Debug levels and component IDs. These are used to control the48* granularity of the output of the ACPI_DEBUG_PRINT macro -- on a49* per-component basis and a per-exception-type basis.50*/5152/* Component IDs are used in the global "DebugLayer" */5354#define ACPI_UTILITIES 0x0000000155#define ACPI_HARDWARE 0x0000000256#define ACPI_EVENTS 0x0000000457#define ACPI_TABLES 0x0000000858#define ACPI_NAMESPACE 0x0000001059#define ACPI_PARSER 0x0000002060#define ACPI_DISPATCHER 0x0000004061#define ACPI_EXECUTER 0x0000008062#define ACPI_RESOURCES 0x0000010063#define ACPI_CA_DEBUGGER 0x0000020064#define ACPI_OS_SERVICES 0x0000040065#define ACPI_CA_DISASSEMBLER 0x000008006667/* Component IDs for ACPI tools and utilities */6869#define ACPI_COMPILER 0x0000100070#define ACPI_TOOLS 0x0000200071#define ACPI_EXAMPLE 0x0000400072#define ACPI_DRIVER 0x0000800073#define DT_COMPILER 0x000100007475#define ACPI_ALL_COMPONENTS 0x0001FFFF76#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS)7778/* Component IDs reserved for ACPI drivers */7980#define ACPI_ALL_DRIVERS 0xFFFF00008182/*83* Raw debug output levels, do not use these in the ACPI_DEBUG_PRINT macros84*/85#define ACPI_LV_INIT 0x0000000186#define ACPI_LV_DEBUG_OBJECT 0x0000000287#define ACPI_LV_INFO 0x0000000488#define ACPI_LV_REPAIR 0x0000000889#define ACPI_LV_ALL_EXCEPTIONS 0x0000000F9091/* Trace verbosity level 1 [Standard Trace Level] */9293#define ACPI_LV_INIT_NAMES 0x0000002094#define ACPI_LV_PARSE 0x0000004095#define ACPI_LV_LOAD 0x0000008096#define ACPI_LV_DISPATCH 0x0000010097#define ACPI_LV_EXEC 0x0000020098#define ACPI_LV_NAMES 0x0000040099#define ACPI_LV_OPREGION 0x00000800100#define ACPI_LV_BFIELD 0x00001000101#define ACPI_LV_TABLES 0x00002000102#define ACPI_LV_VALUES 0x00004000103#define ACPI_LV_OBJECTS 0x00008000104#define ACPI_LV_RESOURCES 0x00010000105#define ACPI_LV_USER_REQUESTS 0x00020000106#define ACPI_LV_PACKAGE 0x00040000107#define ACPI_LV_VERBOSITY1 0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS108109/* Trace verbosity level 2 [Function tracing and memory allocation] */110111#define ACPI_LV_ALLOCATIONS 0x00100000112#define ACPI_LV_FUNCTIONS 0x00200000113#define ACPI_LV_OPTIMIZATIONS 0x00400000114#define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1115#define ACPI_LV_ALL ACPI_LV_VERBOSITY2116117/* Trace verbosity level 3 [Threading, I/O, and Interrupts] */118119#define ACPI_LV_MUTEX 0x01000000120#define ACPI_LV_THREADS 0x02000000121#define ACPI_LV_IO 0x04000000122#define ACPI_LV_INTERRUPTS 0x08000000123#define ACPI_LV_VERBOSITY3 0x0F000000 | ACPI_LV_VERBOSITY2124125/* Exceptionally verbose output -- also used in the global "DebugLevel" */126127#define ACPI_LV_AML_DISASSEMBLE 0x10000000128#define ACPI_LV_VERBOSE_INFO 0x20000000129#define ACPI_LV_FULL_TABLES 0x40000000130#define ACPI_LV_EVENTS 0x80000000131#define ACPI_LV_VERBOSE 0xF0000000132133/*134* Debug level macros that are used in the DEBUG_PRINT macros135*/136#define ACPI_DEBUG_LEVEL(dl) (u32) dl,ACPI_DEBUG_PARAMETERS137138/*139* Exception level -- used in the global "DebugLevel"140*141* Note: For errors, use the ACPI_ERROR or ACPI_EXCEPTION interfaces.142* For warnings, use ACPI_WARNING.143*/144#define ACPI_DB_INIT ACPI_DEBUG_LEVEL (ACPI_LV_INIT)145#define ACPI_DB_DEBUG_OBJECT ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT)146#define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO)147#define ACPI_DB_REPAIR ACPI_DEBUG_LEVEL (ACPI_LV_REPAIR)148#define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS)149150/* Trace level -- also used in the global "DebugLevel" */151152#define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES)153#define ACPI_DB_THREADS ACPI_DEBUG_LEVEL (ACPI_LV_THREADS)154#define ACPI_DB_PARSE ACPI_DEBUG_LEVEL (ACPI_LV_PARSE)155#define ACPI_DB_DISPATCH ACPI_DEBUG_LEVEL (ACPI_LV_DISPATCH)156#define ACPI_DB_LOAD ACPI_DEBUG_LEVEL (ACPI_LV_LOAD)157#define ACPI_DB_EXEC ACPI_DEBUG_LEVEL (ACPI_LV_EXEC)158#define ACPI_DB_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_NAMES)159#define ACPI_DB_OPREGION ACPI_DEBUG_LEVEL (ACPI_LV_OPREGION)160#define ACPI_DB_BFIELD ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD)161#define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES)162#define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS)163#define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS)164#define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES)165#define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS)166#define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS)167#define ACPI_DB_RESOURCES ACPI_DEBUG_LEVEL (ACPI_LV_RESOURCES)168#define ACPI_DB_IO ACPI_DEBUG_LEVEL (ACPI_LV_IO)169#define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)170#define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)171#define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)172#define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)173#define ACPI_DB_EVENTS ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)174175#define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL)176177/* Defaults for debug_level, debug and normal */178179#define ACPI_DEBUG_DEFAULT (ACPI_LV_INFO | ACPI_LV_REPAIR)180#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)181#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)182183#if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES)184/*185* The module name is used primarily for error and debug messages.186* The __FILE__ macro is not very useful for this, because it187* usually includes the entire pathname to the module making the188* debug output difficult to read.189*/190#define ACPI_MODULE_NAME(name) static const char ACPI_UNUSED_VAR _acpi_module_name[] = name;191#else192/*193* For the no-debug and no-error-msg cases, we must at least define194* a null module name.195*/196#define ACPI_MODULE_NAME(name)197#define _acpi_module_name ""198#endif199200/*201* Ascii error messages can be configured out202*/203#ifndef ACPI_NO_ERROR_MESSAGES204#define AE_INFO _acpi_module_name, __LINE__205206/*207* Error reporting. Callers module and line number are inserted by AE_INFO,208* the plist contains a set of parens to allow variable-length lists.209* These macros are used for both the debug and non-debug versions of the code.210*/211#define ACPI_INFO(plist) acpi_info plist212#define ACPI_WARNING(plist) acpi_warning plist213#define ACPI_EXCEPTION(plist) acpi_exception plist214#define ACPI_ERROR(plist) acpi_error plist215#define ACPI_DEBUG_OBJECT(obj,l,i) acpi_ex_do_debug_object(obj,l,i)216217#else218219/* No error messages */220221#define ACPI_INFO(plist)222#define ACPI_WARNING(plist)223#define ACPI_EXCEPTION(plist)224#define ACPI_ERROR(plist)225#define ACPI_DEBUG_OBJECT(obj,l,i)226227#endif /* ACPI_NO_ERROR_MESSAGES */228229/*230* Debug macros that are conditionally compiled231*/232#ifdef ACPI_DEBUG_OUTPUT233234/*235* If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header,236* define it now. This is the case where there the compiler does not support237* a __FUNCTION__ macro or equivalent.238*/239#ifndef ACPI_GET_FUNCTION_NAME240#define ACPI_GET_FUNCTION_NAME _acpi_function_name241242/*243* The Name parameter should be the procedure name as a quoted string.244* The function name is also used by the function exit macros below.245* Note: (const char) is used to be compatible with the debug interfaces246* and macros such as __FUNCTION__.247*/248#define ACPI_FUNCTION_NAME(name) static const char _acpi_function_name[] = #name;249250#else251/* Compiler supports __FUNCTION__ (or equivalent) -- Ignore this macro */252253#define ACPI_FUNCTION_NAME(name)254#endif /* ACPI_GET_FUNCTION_NAME */255256/*257* Common parameters used for debug output functions:258* line number, function name, module(file) name, component ID259*/260#define ACPI_DEBUG_PARAMETERS __LINE__, ACPI_GET_FUNCTION_NAME, _acpi_module_name, _COMPONENT261262/*263* Master debug print macros264* Print message if and only if:265* 1) Debug print for the current component is enabled266* 2) Debug error level or trace level for the print statement is enabled267*/268#define ACPI_DEBUG_PRINT(plist) acpi_debug_print plist269#define ACPI_DEBUG_PRINT_RAW(plist) acpi_debug_print_raw plist270271#else272/*273* This is the non-debug case -- make everything go away,274* leaving no executable debug code!275*/276#define ACPI_FUNCTION_NAME(a)277#define ACPI_DEBUG_PRINT(pl)278#define ACPI_DEBUG_PRINT_RAW(pl)279280#endif /* ACPI_DEBUG_OUTPUT */281282#endif /* __ACOUTPUT_H__ */283284285