ACPI: ACPICA 20060310
Tagged all external interfaces to the subsystem with the new ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL macro. The default definition is NULL. Added the ACPI_THREAD_ID type for the return value from acpi_os_get_thread_id(). This allows the host to define this as necessary to simplify kernel integration. The default definition is ACPI_NATIVE_UINT. Valery Podrezov fixed two interpreter problems related to error processing, the deletion of objects, and placing invalid pointers onto the internal operator result stack. http://bugzilla.kernel.org/show_bug.cgi?id=6028 http://bugzilla.kernel.org/show_bug.cgi?id=6151 Increased the reference count threshold where a warning is emitted for large reference counts in order to eliminate unnecessary warnings on systems with large namespaces (especially 64-bit.) Increased the value from 0x400 to 0x800. Due to universal disagreement as to the meaning of the 'c' in the calloc() function, the ACPI_MEM_CALLOCATE macro has been renamed to ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and ACPI_FREE. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
此提交包含在:
@@ -349,7 +349,7 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
||||
|
||||
/* Allocate a buffer for the entire table */
|
||||
|
||||
table_ptr = ACPI_MEM_ALLOCATE(table_header.length);
|
||||
table_ptr = ACPI_ALLOCATE(table_header.length);
|
||||
if (!table_ptr) {
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
@@ -447,7 +447,7 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
||||
|
||||
cleanup:
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_MEM_FREE(table_ptr);
|
||||
ACPI_FREE(table_ptr);
|
||||
}
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
@@ -903,7 +903,7 @@ static void acpi_ex_dump_reference_obj(union acpi_operand_object *obj_desc)
|
||||
acpi_os_printf("Could not convert name to pathname\n");
|
||||
} else {
|
||||
acpi_os_printf("%s\n", (char *)ret_buf.pointer);
|
||||
ACPI_MEM_FREE(ret_buf.pointer);
|
||||
ACPI_FREE(ret_buf.pointer);
|
||||
}
|
||||
} else if (obj_desc->reference.object) {
|
||||
acpi_os_printf("\nReferenced Object: %p\n",
|
||||
|
@@ -333,7 +333,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
||||
|
||||
/* We need to create a new buffer */
|
||||
|
||||
new_buffer = ACPI_MEM_CALLOCATE(required_length);
|
||||
new_buffer = ACPI_ALLOCATE_ZEROED(required_length);
|
||||
if (!new_buffer) {
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
@@ -377,7 +377,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
||||
/* Free temporary buffer if we used one */
|
||||
|
||||
if (new_buffer) {
|
||||
ACPI_MEM_FREE(new_buffer);
|
||||
ACPI_FREE(new_buffer);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(status);
|
||||
|
@@ -98,7 +98,7 @@ static char *acpi_ex_allocate_name_string(u32 prefix_count, u32 num_name_segs)
|
||||
* Allocate a buffer for the name.
|
||||
* This buffer must be deleted by the caller!
|
||||
*/
|
||||
name_string = ACPI_MEM_ALLOCATE(size_needed);
|
||||
name_string = ACPI_ALLOCATE(size_needed);
|
||||
if (!name_string) {
|
||||
ACPI_ERROR((AE_INFO,
|
||||
"Could not allocate size %d", size_needed));
|
||||
@@ -424,7 +424,7 @@ acpi_ex_get_name_string(acpi_object_type data_type,
|
||||
|
||||
if (ACPI_FAILURE(status)) {
|
||||
if (name_string) {
|
||||
ACPI_MEM_FREE(name_string);
|
||||
ACPI_FREE(name_string);
|
||||
}
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
@@ -554,16 +554,18 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)
|
||||
|
||||
cleanup:
|
||||
|
||||
if (!walk_state->result_obj) {
|
||||
walk_state->result_obj = return_desc;
|
||||
}
|
||||
|
||||
/* Delete return object on error */
|
||||
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_ut_remove_reference(return_desc);
|
||||
}
|
||||
|
||||
/* Save return object on success */
|
||||
|
||||
else if (!walk_state->result_obj) {
|
||||
walk_state->result_obj = return_desc;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
@@ -1028,6 +1030,11 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)
|
||||
acpi_ut_remove_reference(return_desc);
|
||||
}
|
||||
|
||||
walk_state->result_obj = return_desc;
|
||||
/* Save return object on success */
|
||||
|
||||
else {
|
||||
walk_state->result_obj = return_desc;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
@@ -391,7 +391,6 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
|
||||
index = operand[1]->integer.value;
|
||||
return_desc->reference.offset = (u32) index;
|
||||
return_desc->reference.opcode = AML_INDEX_OP;
|
||||
return_desc->reference.object = operand[0];
|
||||
|
||||
/*
|
||||
* At this point, the Source operand is a String, Buffer, or Package.
|
||||
@@ -445,9 +444,10 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a reference to the target package/buffer/string for the life
|
||||
* Save the target object and add a reference to it for the life
|
||||
* of the index
|
||||
*/
|
||||
return_desc->reference.object = operand[0];
|
||||
acpi_ut_add_reference(operand[0]);
|
||||
|
||||
/* Store the reference to the Target */
|
||||
|
@@ -100,8 +100,7 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)
|
||||
(u32) operand[1]->integer.value,
|
||||
(u32) operand[2]->integer.value));
|
||||
|
||||
fatal =
|
||||
ACPI_MEM_ALLOCATE(sizeof(struct acpi_signal_fatal_info));
|
||||
fatal = ACPI_ALLOCATE(sizeof(struct acpi_signal_fatal_info));
|
||||
if (fatal) {
|
||||
fatal->type = (u32) operand[0]->integer.value;
|
||||
fatal->code = (u32) operand[1]->integer.value;
|
||||
@@ -114,7 +113,7 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)
|
||||
|
||||
/* Might return while OS is shutting down, just continue */
|
||||
|
||||
ACPI_MEM_FREE(fatal);
|
||||
ACPI_FREE(fatal);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -196,7 +195,7 @@ acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state)
|
||||
|
||||
/* Always allocate a new buffer for the String */
|
||||
|
||||
buffer = ACPI_MEM_CALLOCATE((acpi_size) length + 1);
|
||||
buffer = ACPI_ALLOCATE_ZEROED((acpi_size) length + 1);
|
||||
if (!buffer) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto cleanup;
|
||||
@@ -211,7 +210,7 @@ acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state)
|
||||
|
||||
/* Allocate a new buffer for the Buffer */
|
||||
|
||||
buffer = ACPI_MEM_CALLOCATE(length);
|
||||
buffer = ACPI_ALLOCATE_ZEROED(length);
|
||||
if (!buffer) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto cleanup;
|
||||
|
@@ -182,8 +182,8 @@ acpi_ex_system_memory_space_handler(u32 function,
|
||||
(acpi_integer) mem_info->mapped_physical_address);
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"system_memory %d (%d width) Address=%8.8X%8.8X\n",
|
||||
function, bit_width, ACPI_FORMAT_UINT64(address)));
|
||||
"System-Memory (width %d) R/W %d Address=%8.8X%8.8X\n",
|
||||
bit_width, function, ACPI_FORMAT_UINT64(address)));
|
||||
|
||||
/*
|
||||
* Perform the memory read or write
|
||||
@@ -287,8 +287,8 @@ acpi_ex_system_io_space_handler(u32 function,
|
||||
ACPI_FUNCTION_TRACE("ex_system_io_space_handler");
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"system_iO %d (%d width) Address=%8.8X%8.8X\n",
|
||||
function, bit_width, ACPI_FORMAT_UINT64(address)));
|
||||
"System-IO (width %d) R/W %d Address=%8.8X%8.8X\n",
|
||||
bit_width, function, ACPI_FORMAT_UINT64(address)));
|
||||
|
||||
/* Decode the function parameter */
|
||||
|
||||
@@ -361,7 +361,7 @@ acpi_ex_pci_config_space_handler(u32 function,
|
||||
pci_register = (u16) (u32) address;
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"pci_config %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n",
|
||||
"Pci-Config %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n",
|
||||
function, bit_width, pci_id->segment, pci_id->bus,
|
||||
pci_id->device, pci_id->function, pci_register));
|
||||
|
||||
|
@@ -80,7 +80,7 @@ acpi_ex_store_buffer_to_buffer(union acpi_operand_object *source_desc,
|
||||
*/
|
||||
if ((target_desc->buffer.length == 0) ||
|
||||
(target_desc->common.flags & AOPOBJ_STATIC_POINTER)) {
|
||||
target_desc->buffer.pointer = ACPI_MEM_ALLOCATE(length);
|
||||
target_desc->buffer.pointer = ACPI_ALLOCATE(length);
|
||||
if (!target_desc->buffer.pointer) {
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
@@ -188,11 +188,11 @@ acpi_ex_store_string_to_string(union acpi_operand_object *source_desc,
|
||||
|
||||
/* Only free if not a pointer into the DSDT */
|
||||
|
||||
ACPI_MEM_FREE(target_desc->string.pointer);
|
||||
ACPI_FREE(target_desc->string.pointer);
|
||||
}
|
||||
|
||||
target_desc->string.pointer = ACPI_MEM_CALLOCATE((acpi_size)
|
||||
length + 1);
|
||||
target_desc->string.pointer = ACPI_ALLOCATE_ZEROED((acpi_size)
|
||||
length + 1);
|
||||
if (!target_desc->string.pointer) {
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者