📄 acmacros.h
字号:
* Macros for the master AML opcode table */#ifdef ACPI_DEBUG#define ACPI_OP(name,Pargs,Iargs,class,type,flags) {Pargs,Iargs,flags,class,type,name}#else#define ACPI_OP(name,Pargs,Iargs,class,type,flags) {Pargs,Iargs,flags,class,type}#endif#define ARG_TYPE_WIDTH 5#define ARG_1(x) ((u32)(x))#define ARG_2(x) ((u32)(x) << (1 * ARG_TYPE_WIDTH))#define ARG_3(x) ((u32)(x) << (2 * ARG_TYPE_WIDTH))#define ARG_4(x) ((u32)(x) << (3 * ARG_TYPE_WIDTH))#define ARG_5(x) ((u32)(x) << (4 * ARG_TYPE_WIDTH))#define ARG_6(x) ((u32)(x) << (5 * ARG_TYPE_WIDTH))#define ARGI_LIST1(a) (ARG_1(a))#define ARGI_LIST2(a,b) (ARG_1(b)|ARG_2(a))#define ARGI_LIST3(a,b,c) (ARG_1(c)|ARG_2(b)|ARG_3(a))#define ARGI_LIST4(a,b,c,d) (ARG_1(d)|ARG_2(c)|ARG_3(b)|ARG_4(a))#define ARGI_LIST5(a,b,c,d,e) (ARG_1(e)|ARG_2(d)|ARG_3(c)|ARG_4(b)|ARG_5(a))#define ARGI_LIST6(a,b,c,d,e,f) (ARG_1(f)|ARG_2(e)|ARG_3(d)|ARG_4(c)|ARG_5(b)|ARG_6(a))#define ARGP_LIST1(a) (ARG_1(a))#define ARGP_LIST2(a,b) (ARG_1(a)|ARG_2(b))#define ARGP_LIST3(a,b,c) (ARG_1(a)|ARG_2(b)|ARG_3(c))#define ARGP_LIST4(a,b,c,d) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d))#define ARGP_LIST5(a,b,c,d,e) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e))#define ARGP_LIST6(a,b,c,d,e,f) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f))#define GET_CURRENT_ARG_TYPE(list) (list & ((u32) 0x1F))#define INCREMENT_ARG_LIST(list) (list >>= ((u32) ARG_TYPE_WIDTH))/* * Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions) * * 1) Address space * 2) Length in bytes -- convert to length in bits * 3) Bit offset is zero * 4) Reserved field is zero * 5) Expand address to 64 bits */#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.address_space_id = (u8) d;\ a.register_bit_width = (u8) MUL_8 (b);\ a.register_bit_offset = 0;\ a.reserved = 0;\ ACPI_STORE_ADDRESS (a.address,c);}/* ACPI V1.0 entries -- address space is always I/O */#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ACPI_ADR_SPACE_SYSTEM_IO)/* * Reporting macros that are never compiled out */#define PARAM_LIST(pl) pl/* * Error reporting. These versions add callers module and line#. Since * _THIS_MODULE gets compiled out when ACPI_DEBUG isn't defined, only * use it in debug mode. */#ifdef ACPI_DEBUG#define REPORT_INFO(fp) {acpi_ut_report_info(_THIS_MODULE,__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#define REPORT_ERROR(fp) {acpi_ut_report_error(_THIS_MODULE,__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#define REPORT_WARNING(fp) {acpi_ut_report_warning(_THIS_MODULE,__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#else#define REPORT_INFO(fp) {acpi_ut_report_info("ACPI",__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#define REPORT_ERROR(fp) {acpi_ut_report_error("ACPI",__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#define REPORT_WARNING(fp) {acpi_ut_report_warning("ACPI",__LINE__,_COMPONENT); \ acpi_os_printf PARAM_LIST(fp);}#endif/* Error reporting. These versions pass thru the module and line# */#define _REPORT_INFO(a,b,c,fp) {acpi_ut_report_info(a,b,c); \ acpi_os_printf PARAM_LIST(fp);}#define _REPORT_ERROR(a,b,c,fp) {acpi_ut_report_error(a,b,c); \ acpi_os_printf PARAM_LIST(fp);}#define _REPORT_WARNING(a,b,c,fp) {acpi_ut_report_warning(a,b,c); \ acpi_os_printf PARAM_LIST(fp);}/* * Debug macros that are conditionally compiled */#ifdef ACPI_DEBUG#define MODULE_NAME(name) static char *_THIS_MODULE = name;/* * Function entry tracing. * The first parameter should be the procedure name as a quoted string. This is declared * as a local string ("_Proc_name) so that it can be also used by the function exit macros below. */#define PROC_NAME(a) acpi_debug_print_info _dbg; \ _dbg.component_id = _COMPONENT; \ _dbg.proc_name = a; \ _dbg.module_name = _THIS_MODULE;#define FUNCTION_TRACE(a) PROC_NAME(a)\ acpi_ut_trace(__LINE__,&_dbg)#define FUNCTION_TRACE_PTR(a,b) PROC_NAME(a)\ acpi_ut_trace_ptr(__LINE__,&_dbg,(void *)b)#define FUNCTION_TRACE_U32(a,b) PROC_NAME(a)\ acpi_ut_trace_u32(__LINE__,&_dbg,(u32)b)#define FUNCTION_TRACE_STR(a,b) PROC_NAME(a)\ acpi_ut_trace_str(__LINE__,&_dbg,(NATIVE_CHAR *)b)#define FUNCTION_ENTRY() acpi_ut_track_stack_ptr()/* * Function exit tracing. * WARNING: These macros include a return statement. This is usually considered * bad form, but having a separate exit macro is very ugly and difficult to maintain. * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros * so that "_Proc_name" is defined. */#define return_VOID {acpi_ut_exit(__LINE__,&_dbg);return;}#define return_ACPI_STATUS(s) {acpi_ut_status_exit(__LINE__,&_dbg,s);return(s);}#define return_VALUE(s) {acpi_ut_value_exit(__LINE__,&_dbg,s);return(s);}#define return_PTR(s) {acpi_ut_ptr_exit(__LINE__,&_dbg,(u8 *)s);return(s);}/* Conditional execution */#define DEBUG_EXEC(a) a#define NORMAL_EXEC(a)#define DEBUG_DEFINE(a) a;#define DEBUG_ONLY_MEMBERS(a) a;#define _OPCODE_NAMES#define _VERBOSE_STRUCTURES/* Stack and buffer dumping */#define DUMP_STACK_ENTRY(a) acpi_ex_dump_operand(a)#define DUMP_OPERANDS(a,b,c,d,e) acpi_ex_dump_operands(a,b,c,d,e,_THIS_MODULE,__LINE__)#define DUMP_ENTRY(a,b) acpi_ns_dump_entry (a,b)#define DUMP_TABLES(a,b) acpi_ns_dump_tables(a,b)#define DUMP_PATHNAME(a,b,c,d) acpi_ns_dump_pathname(a,b,c,d)#define DUMP_RESOURCE_LIST(a) acpi_rs_dump_resource_list(a)#define DUMP_BUFFER(a,b) acpi_ut_dump_buffer((u8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT)#define BREAK_MSG(a) acpi_os_signal (ACPI_SIGNAL_BREAKPOINT,(a))/* * Generate INT3 on ACPI_ERROR (Debug only!) */#define ERROR_BREAK#ifdef ERROR_BREAK#define BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) acpi_os_signal(ACPI_SIGNAL_BREAKPOINT,"Fatal error encountered\n")#else#define BREAK_ON_ERROR(lvl)#endif/* * Master debug print macros * Print iff: * 1) Debug print for the current component is enabled * 2) Debug error level or trace level for the print statement is enabled */#define ACPI_DEBUG_PRINT(pl) acpi_ut_debug_print PARAM_LIST(pl)#define ACPI_DEBUG_PRINT_RAW(pl) acpi_ut_debug_print_raw PARAM_LIST(pl)#else/* * This is the non-debug case -- make everything go away, * leaving no executable debug code! */#define MODULE_NAME(name)#define _THIS_MODULE ""#define DEBUG_EXEC(a)#define NORMAL_EXEC(a) a;#define DEBUG_DEFINE(a)#define DEBUG_ONLY_MEMBERS(a)#define PROC_NAME(a)#define FUNCTION_TRACE(a)#define FUNCTION_TRACE_PTR(a,b)#define FUNCTION_TRACE_U32(a,b)#define FUNCTION_TRACE_STR(a,b)#define FUNCTION_EXIT#define FUNCTION_STATUS_EXIT(s)#define FUNCTION_VALUE_EXIT(s)#define FUNCTION_ENTRY()#define DUMP_STACK_ENTRY(a)#define DUMP_OPERANDS(a,b,c,d,e)#define DUMP_ENTRY(a,b)#define DUMP_TABLES(a,b)#define DUMP_PATHNAME(a,b,c,d)#define DUMP_RESOURCE_LIST(a)#define DUMP_BUFFER(a,b)#define ACPI_DEBUG_PRINT(pl)#define ACPI_DEBUG_PRINT_RAW(pl)#define BREAK_MSG(a)#define return_VOID return#define return_ACPI_STATUS(s) return(s)#define return_VALUE(s) return(s)#define return_PTR(s) return(s)#endif/* * Some code only gets executed when the debugger is built in. * Note that this is entirely independent of whether the * DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not. */#ifdef ENABLE_DEBUGGER#define DEBUGGER_EXEC(a) a#else#define DEBUGGER_EXEC(a)#endif/* * For 16-bit code, we want to shrink some things even though * we are using ACPI_DEBUG to get the debug output */#ifdef _IA16#undef DEBUG_ONLY_MEMBERS#undef _VERBOSE_STRUCTURES#define DEBUG_ONLY_MEMBERS(a)#endif#ifdef ACPI_DEBUG/* * 1) Set name to blanks * 2) Copy the object name */#define ADD_OBJECT_NAME(a,b) MEMSET (a->common.name, ' ', sizeof (a->common.name));\ STRNCPY (a->common.name, acpi_gbl_ns_type_names[b], sizeof (a->common.name))#else#define ADD_OBJECT_NAME(a,b)#endif/* * Memory allocation tracking (DEBUG ONLY) */#ifndef ACPI_DBG_TRACK_ALLOCATIONS/* Memory allocation */#define ACPI_MEM_ALLOCATE(a) acpi_os_allocate(a)#define ACPI_MEM_CALLOCATE(a) acpi_os_callocate(a)#define ACPI_MEM_FREE(a) acpi_os_free(a)#define ACPI_MEM_TRACKING(a)#else/* Memory allocation */#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate(a,_COMPONENT,_THIS_MODULE,__LINE__)#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate(a, _COMPONENT,_THIS_MODULE,__LINE__)#define ACPI_MEM_FREE(a) acpi_ut_free(a,_COMPONENT,_THIS_MODULE,__LINE__)#define ACPI_MEM_TRACKING(a) a#endif /* ACPI_DBG_TRACK_ALLOCATIONS */#define ACPI_GET_STACK_POINTER _asm {mov eax, ebx}#endif /* ACMACROS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -