⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exdump.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 2 页
字号:
}static void acpi_ex_out_pointer(char *title, void *value){	acpi_os_printf("%20s : %p\n", title, value);}static void acpi_ex_out_integer(char *title, u32 value){	acpi_os_printf("%20s : %.2X\n", title, value);}static void acpi_ex_out_address(char *title, acpi_physical_address value){#if ACPI_MACHINE_WIDTH == 16	acpi_os_printf("%20s : %p\n", title, value);#else	acpi_os_printf("%20s : %8.8X%8.8X\n", title, ACPI_FORMAT_UINT64(value));#endif}/******************************************************************************* * * FUNCTION:    acpi_ex_dump_node * * PARAMETERS:  *Node               - Descriptor to dump *              Flags               - Force display if TRUE * * DESCRIPTION: Dumps the members of the given.Node * ******************************************************************************/void acpi_ex_dump_node(struct acpi_namespace_node *node, u32 flags){	ACPI_FUNCTION_ENTRY();	if (!flags) {		if (!		    ((ACPI_LV_OBJECTS & acpi_dbg_level)		     && (_COMPONENT & acpi_dbg_layer))) {			return;		}	}	acpi_os_printf("%20s : %4.4s\n", "Name", acpi_ut_get_node_name(node));	acpi_ex_out_string("Type", acpi_ut_get_type_name(node->type));	acpi_ex_out_integer("Flags", node->flags);	acpi_ex_out_integer("Owner Id", node->owner_id);	acpi_ex_out_integer("Reference Count", node->reference_count);	acpi_ex_out_pointer("Attached Object",			    acpi_ns_get_attached_object(node));	acpi_ex_out_pointer("child_list", node->child);	acpi_ex_out_pointer("next_peer", node->peer);	acpi_ex_out_pointer("Parent", acpi_ns_get_parent_node(node));}/******************************************************************************* * * FUNCTION:    acpi_ex_dump_reference * * PARAMETERS:  Object              - Descriptor to dump * * DESCRIPTION: Dumps a reference object * ******************************************************************************/static void acpi_ex_dump_reference(union acpi_operand_object *obj_desc){	struct acpi_buffer ret_buf;	acpi_status status;	if (obj_desc->reference.opcode == AML_INT_NAMEPATH_OP) {		acpi_os_printf("Named Object %p ", obj_desc->reference.node);		ret_buf.length = ACPI_ALLOCATE_LOCAL_BUFFER;		status =		    acpi_ns_handle_to_pathname(obj_desc->reference.node,					       &ret_buf);		if (ACPI_FAILURE(status)) {			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);		}	} else if (obj_desc->reference.object) {		acpi_os_printf("\nReferenced Object: %p\n",			       obj_desc->reference.object);	}}/******************************************************************************* * * FUNCTION:    acpi_ex_dump_package * * PARAMETERS:  Object              - Descriptor to dump *              Level               - Indentation Level *              Index               - Package index for this object * * DESCRIPTION: Dumps the elements of the package * ******************************************************************************/static voidacpi_ex_dump_package(union acpi_operand_object *obj_desc, u32 level, u32 index){	u32 i;	/* Indentation and index output */	if (level > 0) {		for (i = 0; i < level; i++) {			acpi_os_printf(" ");		}		acpi_os_printf("[%.2d] ", index);	}	acpi_os_printf("%p ", obj_desc);	/* Null package elements are allowed */	if (!obj_desc) {		acpi_os_printf("[Null Object]\n");		return;	}	/* Packages may only contain a few object types */	switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {	case ACPI_TYPE_INTEGER:		acpi_os_printf("[Integer] = %8.8X%8.8X\n",			       ACPI_FORMAT_UINT64(obj_desc->integer.value));		break;	case ACPI_TYPE_STRING:		acpi_os_printf("[String] Value: ");		for (i = 0; i < obj_desc->string.length; i++) {			acpi_os_printf("%c", obj_desc->string.pointer[i]);		}		acpi_os_printf("\n");		break;	case ACPI_TYPE_BUFFER:		acpi_os_printf("[Buffer] Length %.2X = ",			       obj_desc->buffer.length);		if (obj_desc->buffer.length) {			acpi_ut_dump_buffer((u8 *) obj_desc->buffer.pointer,					    obj_desc->buffer.length,					    DB_DWORD_DISPLAY, _COMPONENT);		} else {			acpi_os_printf("\n");		}		break;	case ACPI_TYPE_PACKAGE:		acpi_os_printf("[Package] Contains %d Elements: \n",			       obj_desc->package.count);		for (i = 0; i < obj_desc->package.count; i++) {			acpi_ex_dump_package(obj_desc->package.elements[i],					     level + 1, i);		}		break;	case ACPI_TYPE_LOCAL_REFERENCE:		acpi_os_printf("[Object Reference] ");		acpi_ex_dump_reference(obj_desc);		break;	default:		acpi_os_printf("[Unknown Type] %X\n",			       ACPI_GET_OBJECT_TYPE(obj_desc));		break;	}}/******************************************************************************* * * FUNCTION:    acpi_ex_dump_object_descriptor * * PARAMETERS:  Object              - Descriptor to dump *              Flags               - Force display if TRUE * * DESCRIPTION: Dumps the members of the object descriptor given. * ******************************************************************************/voidacpi_ex_dump_object_descriptor(union acpi_operand_object *obj_desc, u32 flags){	ACPI_FUNCTION_TRACE("ex_dump_object_descriptor");	if (!obj_desc) {		return_VOID;	}	if (!flags) {		if (!		    ((ACPI_LV_OBJECTS & acpi_dbg_level)		     && (_COMPONENT & acpi_dbg_layer))) {			return_VOID;		}	}	if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_NAMED) {		acpi_ex_dump_node((struct acpi_namespace_node *)obj_desc,				  flags);		acpi_os_printf("\nAttached Object (%p):\n",			       ((struct acpi_namespace_node *)obj_desc)->			       object);		acpi_ex_dump_object_descriptor(((struct acpi_namespace_node *)						obj_desc)->object, flags);		return_VOID;	}	if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) {		acpi_os_printf		    ("ex_dump_object_descriptor: %p is not an ACPI operand object: [%s]\n",		     obj_desc, acpi_ut_get_descriptor_name(obj_desc));		return_VOID;	}	/* Common Fields */	acpi_ex_out_string("Type", acpi_ut_get_object_type_name(obj_desc));	acpi_ex_out_integer("Reference Count",			    obj_desc->common.reference_count);	acpi_ex_out_integer("Flags", obj_desc->common.flags);	/* Object-specific Fields */	switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {	case ACPI_TYPE_INTEGER:		acpi_os_printf("%20s : %8.8X%8.8X\n", "Value",			       ACPI_FORMAT_UINT64(obj_desc->integer.value));		break;	case ACPI_TYPE_STRING:		acpi_ex_out_integer("Length", obj_desc->string.length);		acpi_os_printf("%20s : %p ", "Pointer",			       obj_desc->string.pointer);		acpi_ut_print_string(obj_desc->string.pointer, ACPI_UINT8_MAX);		acpi_os_printf("\n");		break;	case ACPI_TYPE_BUFFER:		acpi_ex_out_integer("Length", obj_desc->buffer.length);		acpi_ex_out_pointer("Pointer", obj_desc->buffer.pointer);		ACPI_DUMP_BUFFER(obj_desc->buffer.pointer,				 obj_desc->buffer.length);		break;	case ACPI_TYPE_PACKAGE:		acpi_ex_out_integer("Flags", obj_desc->package.flags);		acpi_ex_out_integer("Elements", obj_desc->package.count);		acpi_ex_out_pointer("Element List", obj_desc->package.elements);		/* Dump the package contents */		acpi_os_printf("\nPackage Contents:\n");		acpi_ex_dump_package(obj_desc, 0, 0);		break;	case ACPI_TYPE_DEVICE:		acpi_ex_out_pointer("Handler", obj_desc->device.handler);		acpi_ex_out_pointer("system_notify",				    obj_desc->device.system_notify);		acpi_ex_out_pointer("device_notify",				    obj_desc->device.device_notify);		break;	case ACPI_TYPE_EVENT:		acpi_ex_out_pointer("Semaphore", obj_desc->event.semaphore);		break;	case ACPI_TYPE_METHOD:		acpi_ex_out_integer("param_count",				    obj_desc->method.param_count);		acpi_ex_out_integer("Concurrency",				    obj_desc->method.concurrency);		acpi_ex_out_pointer("Semaphore", obj_desc->method.semaphore);		acpi_ex_out_integer("owner_id", obj_desc->method.owner_id);		acpi_ex_out_integer("aml_length", obj_desc->method.aml_length);		acpi_ex_out_pointer("aml_start", obj_desc->method.aml_start);		break;	case ACPI_TYPE_MUTEX:		acpi_ex_out_integer("sync_level", obj_desc->mutex.sync_level);		acpi_ex_out_pointer("owner_thread",				    obj_desc->mutex.owner_thread);		acpi_ex_out_integer("acquire_depth",				    obj_desc->mutex.acquisition_depth);		acpi_ex_out_pointer("Semaphore", obj_desc->mutex.semaphore);		break;	case ACPI_TYPE_REGION:		acpi_ex_out_integer("space_id", obj_desc->region.space_id);		acpi_ex_out_integer("Flags", obj_desc->region.flags);		acpi_ex_out_address("Address", obj_desc->region.address);		acpi_ex_out_integer("Length", obj_desc->region.length);		acpi_ex_out_pointer("Handler", obj_desc->region.handler);		acpi_ex_out_pointer("Next", obj_desc->region.next);		break;	case ACPI_TYPE_POWER:		acpi_ex_out_integer("system_level",				    obj_desc->power_resource.system_level);		acpi_ex_out_integer("resource_order",				    obj_desc->power_resource.resource_order);		acpi_ex_out_pointer("system_notify",				    obj_desc->power_resource.system_notify);		acpi_ex_out_pointer("device_notify",				    obj_desc->power_resource.device_notify);		break;	case ACPI_TYPE_PROCESSOR:		acpi_ex_out_integer("Processor ID",				    obj_desc->processor.proc_id);		acpi_ex_out_integer("Length", obj_desc->processor.length);		acpi_ex_out_address("Address",				    (acpi_physical_address) obj_desc->processor.				    address);		acpi_ex_out_pointer("system_notify",				    obj_desc->processor.system_notify);		acpi_ex_out_pointer("device_notify",				    obj_desc->processor.device_notify);		acpi_ex_out_pointer("Handler", obj_desc->processor.handler);		break;	case ACPI_TYPE_THERMAL:		acpi_ex_out_pointer("system_notify",				    obj_desc->thermal_zone.system_notify);		acpi_ex_out_pointer("device_notify",				    obj_desc->thermal_zone.device_notify);		acpi_ex_out_pointer("Handler", obj_desc->thermal_zone.handler);		break;	case ACPI_TYPE_BUFFER_FIELD:	case ACPI_TYPE_LOCAL_REGION_FIELD:	case ACPI_TYPE_LOCAL_BANK_FIELD:	case ACPI_TYPE_LOCAL_INDEX_FIELD:		acpi_ex_out_integer("field_flags",				    obj_desc->common_field.field_flags);		acpi_ex_out_integer("access_byte_width",				    obj_desc->common_field.access_byte_width);		acpi_ex_out_integer("bit_length",				    obj_desc->common_field.bit_length);		acpi_ex_out_integer("fld_bit_offset",				    obj_desc->common_field.				    start_field_bit_offset);		acpi_ex_out_integer("base_byte_offset",				    obj_desc->common_field.base_byte_offset);		acpi_ex_out_pointer("parent_node", obj_desc->common_field.node);		switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {		case ACPI_TYPE_BUFFER_FIELD:			acpi_ex_out_pointer("buffer_obj",					    obj_desc->buffer_field.buffer_obj);			break;		case ACPI_TYPE_LOCAL_REGION_FIELD:			acpi_ex_out_pointer("region_obj",					    obj_desc->field.region_obj);			break;		case ACPI_TYPE_LOCAL_BANK_FIELD:			acpi_ex_out_integer("Value",					    obj_desc->bank_field.value);			acpi_ex_out_pointer("region_obj",					    obj_desc->bank_field.region_obj);			acpi_ex_out_pointer("bank_obj",					    obj_desc->bank_field.bank_obj);			break;		case ACPI_TYPE_LOCAL_INDEX_FIELD:			acpi_ex_out_integer("Value",					    obj_desc->index_field.value);			acpi_ex_out_pointer("Index",					    obj_desc->index_field.index_obj);			acpi_ex_out_pointer("Data",					    obj_desc->index_field.data_obj);			break;		default:			/* All object types covered above */			break;		}		break;	case ACPI_TYPE_LOCAL_REFERENCE:		acpi_ex_out_integer("target_type",				    obj_desc->reference.target_type);		acpi_ex_out_string("Opcode",				   (acpi_ps_get_opcode_info				    (obj_desc->reference.opcode))->name);		acpi_ex_out_integer("Offset", obj_desc->reference.offset);		acpi_ex_out_pointer("obj_desc", obj_desc->reference.object);		acpi_ex_out_pointer("Node", obj_desc->reference.node);		acpi_ex_out_pointer("Where", obj_desc->reference.where);		acpi_ex_dump_reference(obj_desc);		break;	case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:		acpi_ex_out_integer("space_id",				    obj_desc->address_space.space_id);		acpi_ex_out_pointer("Next", obj_desc->address_space.next);		acpi_ex_out_pointer("region_list",				    obj_desc->address_space.region_list);		acpi_ex_out_pointer("Node", obj_desc->address_space.node);		acpi_ex_out_pointer("Context", obj_desc->address_space.context);		break;	case ACPI_TYPE_LOCAL_NOTIFY:		acpi_ex_out_pointer("Node", obj_desc->notify.node);		acpi_ex_out_pointer("Context", obj_desc->notify.context);		break;	case ACPI_TYPE_LOCAL_ALIAS:	case ACPI_TYPE_LOCAL_METHOD_ALIAS:	case ACPI_TYPE_LOCAL_EXTRA:	case ACPI_TYPE_LOCAL_DATA:	default:		acpi_os_printf		    ("ex_dump_object_descriptor: Display not implemented for object type %s\n",		     acpi_ut_get_object_type_name(obj_desc));		break;	}	return_VOID;}#endif				/*  ACPI_FUTURE_USAGE  */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -