📄 cmglobal.c
字号:
u8
acpi_cm_valid_object_type (
u32 type)
{
if (type > ACPI_TYPE_MAX)
{
if ((type < INTERNAL_TYPE_BEGIN) ||
(type > INTERNAL_TYPE_MAX))
{
return (FALSE);
}
}
return (TRUE);
}
/*****************************************************************************
*
* FUNCTION: Acpi_cm_format_exception
*
* PARAMETERS: Status - Acpi status to be formatted
*
* RETURN: Formatted status string
*
* DESCRIPTION: Convert an ACPI exception to a string
*
****************************************************************************/
NATIVE_CHAR *
acpi_cm_format_exception (
ACPI_STATUS status)
{
NATIVE_CHAR *exception = "UNKNOWN_STATUS";
ACPI_STATUS sub_status;
sub_status = (status & ~AE_CODE_MASK);
switch (status & AE_CODE_MASK)
{
case AE_CODE_ENVIRONMENTAL:
if (sub_status <= AE_CODE_ENV_MAX)
{
exception = acpi_gbl_exception_names_env [sub_status];
}
break;
case AE_CODE_PROGRAMMER:
if (sub_status <= AE_CODE_PGM_MAX)
{
exception = acpi_gbl_exception_names_pgm [sub_status -1];
}
break;
case AE_CODE_ACPI_TABLES:
if (sub_status <= AE_CODE_TBL_MAX)
{
exception = acpi_gbl_exception_names_tbl [sub_status -1];
}
break;
case AE_CODE_AML:
if (sub_status <= AE_CODE_AML_MAX)
{
exception = acpi_gbl_exception_names_aml [sub_status -1];
}
break;
case AE_CODE_CONTROL:
if (sub_status <= AE_CODE_CTRL_MAX)
{
exception = acpi_gbl_exception_names_ctrl [sub_status -1];
}
break;
default:
break;
}
return (exception);
}
/****************************************************************************
*
* FUNCTION: Acpi_cm_allocate_owner_id
*
* PARAMETERS: Id_type - Type of ID (method or table)
*
* DESCRIPTION: Allocate a table or method owner id
*
***************************************************************************/
ACPI_OWNER_ID
acpi_cm_allocate_owner_id (
u32 id_type)
{
ACPI_OWNER_ID owner_id = 0xFFFF;
acpi_cm_acquire_mutex (ACPI_MTX_CACHES);
switch (id_type)
{
case OWNER_TYPE_TABLE:
owner_id = acpi_gbl_next_table_owner_id;
acpi_gbl_next_table_owner_id++;
if (acpi_gbl_next_table_owner_id == FIRST_METHOD_ID)
{
acpi_gbl_next_table_owner_id = FIRST_TABLE_ID;
}
break;
case OWNER_TYPE_METHOD:
owner_id = acpi_gbl_next_method_owner_id;
acpi_gbl_next_method_owner_id++;
if (acpi_gbl_next_method_owner_id == FIRST_TABLE_ID)
{
acpi_gbl_next_method_owner_id = FIRST_METHOD_ID;
}
break;
}
acpi_cm_release_mutex (ACPI_MTX_CACHES);
return (owner_id);
}
/****************************************************************************
*
* FUNCTION: Acpi_cm_init_globals
*
* PARAMETERS: none
*
* DESCRIPTION: Init library globals. All globals that require specific
* initialization should be initialized here!
*
***************************************************************************/
void
acpi_cm_init_globals (
void)
{
u32 i;
/* ACPI table structure */
for (i = 0; i < NUM_ACPI_TABLES; i++)
{
acpi_gbl_acpi_tables[i].prev = &acpi_gbl_acpi_tables[i];
acpi_gbl_acpi_tables[i].next = &acpi_gbl_acpi_tables[i];
acpi_gbl_acpi_tables[i].pointer = NULL;
acpi_gbl_acpi_tables[i].length = 0;
acpi_gbl_acpi_tables[i].allocation = ACPI_MEM_NOT_ALLOCATED;
acpi_gbl_acpi_tables[i].count = 0;
}
/* Address Space handler array */
for (i = 0; i < ACPI_NUM_ADDRESS_SPACES; i++)
{
acpi_gbl_address_spaces[i].handler = NULL;
acpi_gbl_address_spaces[i].context = NULL;
}
/* Mutex locked flags */
for (i = 0; i < NUM_MTX; i++)
{
acpi_gbl_acpi_mutex_info[i].mutex = NULL;
acpi_gbl_acpi_mutex_info[i].locked = FALSE;
acpi_gbl_acpi_mutex_info[i].use_count = 0;
acpi_gbl_acpi_mutex_info[i].owner_id = 0;
}
/* Global notify handlers */
acpi_gbl_sys_notify.handler = NULL;
acpi_gbl_drv_notify.handler = NULL;
/* Global "typed" ACPI table pointers */
acpi_gbl_RSDP = NULL;
acpi_gbl_XSDT = NULL;
acpi_gbl_FACS = NULL;
acpi_gbl_FADT = NULL;
acpi_gbl_DSDT = NULL;
/* Global Lock support */
acpi_gbl_global_lock_acquired = FALSE;
acpi_gbl_global_lock_thread_count = 0;
/* Miscellaneous variables */
acpi_gbl_system_flags = 0;
acpi_gbl_startup_flags = 0;
acpi_gbl_rsdp_original_location = 0;
acpi_gbl_cm_single_step = FALSE;
acpi_gbl_db_terminate_threads = FALSE;
acpi_gbl_shutdown = FALSE;
acpi_gbl_ns_lookup_count = 0;
acpi_gbl_ps_find_count = 0;
acpi_gbl_acpi_hardware_present = TRUE;
acpi_gbl_next_table_owner_id = FIRST_TABLE_ID;
acpi_gbl_next_method_owner_id = FIRST_METHOD_ID;
acpi_gbl_debugger_configuration = DEBUGGER_THREADING;
/* Cache of small "state" objects */
acpi_gbl_generic_state_cache = NULL;
acpi_gbl_generic_state_cache_depth = 0;
acpi_gbl_state_cache_requests = 0;
acpi_gbl_state_cache_hits = 0;
acpi_gbl_parse_cache = NULL;
acpi_gbl_parse_cache_depth = 0;
acpi_gbl_parse_cache_requests = 0;
acpi_gbl_parse_cache_hits = 0;
acpi_gbl_ext_parse_cache = NULL;
acpi_gbl_ext_parse_cache_depth = 0;
acpi_gbl_ext_parse_cache_requests = 0;
acpi_gbl_ext_parse_cache_hits = 0;
acpi_gbl_object_cache = NULL;
acpi_gbl_object_cache_depth = 0;
acpi_gbl_object_cache_requests = 0;
acpi_gbl_object_cache_hits = 0;
acpi_gbl_walk_state_cache = NULL;
acpi_gbl_walk_state_cache_depth = 0;
acpi_gbl_walk_state_cache_requests = 0;
acpi_gbl_walk_state_cache_hits = 0;
/* Hardware oriented */
acpi_gbl_gpe0enable_register_save = NULL;
acpi_gbl_gpe1_enable_register_save = NULL;
acpi_gbl_original_mode = SYS_MODE_UNKNOWN; /* original ACPI/legacy mode */
acpi_gbl_gpe_registers = NULL;
acpi_gbl_gpe_info = NULL;
/* Namespace */
acpi_gbl_root_node = NULL;
acpi_gbl_root_node_struct.name = ACPI_ROOT_NAME;
acpi_gbl_root_node_struct.data_type = ACPI_DESC_TYPE_NAMED;
acpi_gbl_root_node_struct.type = ACPI_TYPE_ANY;
acpi_gbl_root_node_struct.child = NULL;
acpi_gbl_root_node_struct.peer = NULL;
acpi_gbl_root_node_struct.object = NULL;
acpi_gbl_root_node_struct.flags = ANOBJ_END_OF_PEER_LIST;
/* Memory allocation metrics - compiled out in non-debug mode. */
INITIALIZE_ALLOCATION_METRICS();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -