📄 aclocal.h
字号:
/****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem * *****************************************************************************//* * Copyright (C) 2000 - 2005, R. Byron Moore * 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. */#ifndef __ACLOCAL_H__#define __ACLOCAL_H__#define ACPI_WAIT_FOREVER 0xFFFF /* u16, as per ACPI spec */typedef void * acpi_mutex;typedef u32 acpi_mutex_handle;/* Total number of aml opcodes defined */#define AML_NUM_OPCODES 0x7F/***************************************************************************** * * Mutex typedefs and structs * ****************************************************************************//* * Predefined handles for the mutex objects used within the subsystem * All mutex objects are automatically created by acpi_ut_mutex_initialize. * * The acquire/release ordering protocol is implied via this list. Mutexes * with a lower value must be acquired before mutexes with a higher value. * * NOTE: any changes here must be reflected in the acpi_gbl_mutex_names table also! */#define ACPI_MTX_EXECUTE 0#define ACPI_MTX_INTERPRETER 1#define ACPI_MTX_PARSER 2#define ACPI_MTX_DISPATCHER 3#define ACPI_MTX_TABLES 4#define ACPI_MTX_OP_REGIONS 5#define ACPI_MTX_NAMESPACE 6#define ACPI_MTX_EVENTS 7#define ACPI_MTX_HARDWARE 8#define ACPI_MTX_CACHES 9#define ACPI_MTX_MEMORY 10#define ACPI_MTX_DEBUG_CMD_COMPLETE 11#define ACPI_MTX_DEBUG_CMD_READY 12#define MAX_MUTEX 12#define NUM_MUTEX MAX_MUTEX+1#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)#ifdef DEFINE_ACPI_GLOBALS/* Names for the mutexes used in the subsystem */static char *acpi_gbl_mutex_names[] ={ "ACPI_MTX_Execute", "ACPI_MTX_Interpreter", "ACPI_MTX_Parser", "ACPI_MTX_Dispatcher", "ACPI_MTX_Tables", "ACPI_MTX_op_regions", "ACPI_MTX_Namespace", "ACPI_MTX_Events", "ACPI_MTX_Hardware", "ACPI_MTX_Caches", "ACPI_MTX_Memory", "ACPI_MTX_debug_cmd_complete", "ACPI_MTX_debug_cmd_ready",};#endif#endif/* Table for the global mutexes */struct acpi_mutex_info{ acpi_mutex mutex; u32 use_count; u32 owner_id;};/* This owner ID means that the mutex is not in use (unlocked) */#define ACPI_MUTEX_NOT_ACQUIRED (u32) (-1)/* Lock flag parameter for various interfaces */#define ACPI_MTX_DO_NOT_LOCK 0#define ACPI_MTX_LOCK 1typedef u16 acpi_owner_id;#define ACPI_OWNER_TYPE_TABLE 0x0#define ACPI_OWNER_TYPE_METHOD 0x1#define ACPI_FIRST_METHOD_ID 0x0001#define ACPI_FIRST_TABLE_ID 0xF000/* Field access granularities */#define ACPI_FIELD_BYTE_GRANULARITY 1#define ACPI_FIELD_WORD_GRANULARITY 2#define ACPI_FIELD_DWORD_GRANULARITY 4#define ACPI_FIELD_QWORD_GRANULARITY 8/***************************************************************************** * * Namespace typedefs and structs * ****************************************************************************//* Operational modes of the AML interpreter/scanner */typedef enum{ ACPI_IMODE_LOAD_PASS1 = 0x01, ACPI_IMODE_LOAD_PASS2 = 0x02, ACPI_IMODE_EXECUTE = 0x0E} acpi_interpreter_mode;/* * The Node describes a named object that appears in the AML * An acpi_node is used to store Nodes. * * data_type is used to differentiate between internal descriptors, and MUST * be the first byte in this structure. */union acpi_name_union{ u32 integer; char ascii[4];};struct acpi_namespace_node{ u8 descriptor; /* Used to differentiate object descriptor types */ u8 type; /* Type associated with this name */ u16 owner_id; union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */ union acpi_operand_object *object; /* Pointer to attached ACPI object (optional) */ struct acpi_namespace_node *child; /* First child */ struct acpi_namespace_node *peer; /* Next peer*/ u16 reference_count; /* Current count of references and children */ u8 flags;};#define ACPI_ENTRY_NOT_FOUND NULL/* Node flags */#define ANOBJ_RESERVED 0x01#define ANOBJ_END_OF_PEER_LIST 0x02#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */#define ANOBJ_METHOD_ARG 0x08#define ANOBJ_METHOD_LOCAL 0x10#define ANOBJ_METHOD_NO_RETVAL 0x20#define ANOBJ_METHOD_SOME_NO_RETVAL 0x40#define ANOBJ_IS_BIT_OFFSET 0x80/* * ACPI Table Descriptor. One per ACPI table */struct acpi_table_desc{ struct acpi_table_desc *prev; struct acpi_table_desc *next; struct acpi_table_desc *installed_desc; struct acpi_table_header *pointer; u8 *aml_start; u64 physical_address; u32 aml_length; acpi_size length; acpi_owner_id table_id; u8 type; u8 allocation; u8 loaded_into_namespace;};struct acpi_table_list{ struct acpi_table_desc *next; u32 count;};struct acpi_find_context{ char *search_for; acpi_handle *list; u32 *count;};struct acpi_ns_search_data{ struct acpi_namespace_node *node;};/* * Predefined Namespace items */struct acpi_predefined_names{ char *name; u8 type; char *val;};/* Object types used during package copies */#define ACPI_COPY_TYPE_SIMPLE 0#define ACPI_COPY_TYPE_PACKAGE 1/* Info structure used to convert external<->internal namestrings */struct acpi_namestring_info{ char *external_name; char *next_external_char; char *internal_name; u32 length; u32 num_segments; u32 num_carats; u8 fully_qualified;};/* Field creation info */struct acpi_create_field_info{ struct acpi_namespace_node *region_node; struct acpi_namespace_node *field_node; struct acpi_namespace_node *register_node; struct acpi_namespace_node *data_register_node; u32 bank_value; u32 field_bit_position; u32 field_bit_length; u8 field_flags; u8 attribute; u8 field_type;};/***************************************************************************** * * Event typedefs and structs * ****************************************************************************//* Dispatch info for each GPE -- either a method or handler, cannot be both */struct acpi_handler_info{ acpi_event_handler address; /* Address of handler, if any */ void *context; /* Context to be passed to handler */ struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */};union acpi_gpe_dispatch_info{ struct acpi_namespace_node *method_node; /* Method node for this GPE level */ struct acpi_handler_info *handler;};/* * Information about a GPE, one per each GPE in an array. * NOTE: Important to keep this struct as small as possible. */struct acpi_gpe_event_info{ union acpi_gpe_dispatch_info dispatch; /* Either Method or Handler */ struct acpi_gpe_register_info *register_info; /* Backpointer to register info */ u8 flags; /* Misc info about this GPE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -