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

📄 nsdump.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 2 页
字号:
		case ACPI_TYPE_LOCAL_BANK_FIELD:			acpi_os_printf("Rgn [%4.4s] Bnk [%4.4s]",				       acpi_ut_get_node_name(obj_desc->							     common_field.							     region_obj->region.							     node),				       acpi_ut_get_node_name(obj_desc->							     bank_field.							     bank_obj->							     common_field.							     node));			break;		case ACPI_TYPE_LOCAL_INDEX_FIELD:			acpi_os_printf("Idx [%4.4s] Dat [%4.4s]",				       acpi_ut_get_node_name(obj_desc->							     index_field.							     index_obj->							     common_field.node),				       acpi_ut_get_node_name(obj_desc->							     index_field.							     data_obj->							     common_field.							     node));			break;		case ACPI_TYPE_LOCAL_ALIAS:		case ACPI_TYPE_LOCAL_METHOD_ALIAS:			acpi_os_printf("Target %4.4s (%p)\n",				       acpi_ut_get_node_name(obj_desc),				       obj_desc);			break;		default:			acpi_os_printf("Object %p\n", obj_desc);			break;		}		/* Common field handling */		switch (type) {		case ACPI_TYPE_BUFFER_FIELD:		case ACPI_TYPE_LOCAL_REGION_FIELD:		case ACPI_TYPE_LOCAL_BANK_FIELD:		case ACPI_TYPE_LOCAL_INDEX_FIELD:			acpi_os_printf(" Off %.3X Len %.2X Acc %.2hd\n",				       (obj_desc->common_field.					base_byte_offset * 8)				       +				       obj_desc->common_field.				       start_field_bit_offset,				       obj_desc->common_field.bit_length,				       obj_desc->common_field.				       access_byte_width);			break;		default:			break;		}		break;	case ACPI_DISPLAY_OBJECTS:		acpi_os_printf("O:%p", obj_desc);		if (!obj_desc) {			/* No attached object, we are done */			acpi_os_printf("\n");			return (AE_OK);		}		acpi_os_printf("(R%d)", obj_desc->common.reference_count);		switch (type) {		case ACPI_TYPE_METHOD:			/* Name is a Method and its AML offset/length are set */			acpi_os_printf(" M:%p-%X\n", obj_desc->method.aml_start,				       obj_desc->method.aml_length);			break;		case ACPI_TYPE_INTEGER:			acpi_os_printf(" I:%8.8X8.8%X\n",				       ACPI_FORMAT_UINT64(obj_desc->integer.							  value));			break;		case ACPI_TYPE_STRING:			acpi_os_printf(" S:%p-%X\n", obj_desc->string.pointer,				       obj_desc->string.length);			break;		case ACPI_TYPE_BUFFER:			acpi_os_printf(" B:%p-%X\n", obj_desc->buffer.pointer,				       obj_desc->buffer.length);			break;		default:			acpi_os_printf("\n");			break;		}		break;	default:		acpi_os_printf("\n");		break;	}	/* If debug turned off, done */	if (!(acpi_dbg_level & ACPI_LV_VALUES)) {		return (AE_OK);	}	/* If there is an attached object, display it */	dbg_level = acpi_dbg_level;	acpi_dbg_level = 0;	obj_desc = acpi_ns_get_attached_object(this_node);	acpi_dbg_level = dbg_level;	/* Dump attached objects */	while (obj_desc) {		obj_type = ACPI_TYPE_INVALID;		acpi_os_printf("Attached Object %p: ", obj_desc);		/* Decode the type of attached object and dump the contents */		switch (ACPI_GET_DESCRIPTOR_TYPE(obj_desc)) {		case ACPI_DESC_TYPE_NAMED:			acpi_os_printf("(Ptr to Node)\n");			bytes_to_dump = sizeof(struct acpi_namespace_node);			ACPI_DUMP_BUFFER(obj_desc, bytes_to_dump);			break;		case ACPI_DESC_TYPE_OPERAND:			obj_type = ACPI_GET_OBJECT_TYPE(obj_desc);			if (obj_type > ACPI_TYPE_LOCAL_MAX) {				acpi_os_printf				    ("(Ptr to ACPI Object type %X [UNKNOWN])\n",				     obj_type);				bytes_to_dump = 32;			} else {				acpi_os_printf				    ("(Ptr to ACPI Object type %X [%s])\n",				     obj_type, acpi_ut_get_type_name(obj_type));				bytes_to_dump =				    sizeof(union acpi_operand_object);			}			ACPI_DUMP_BUFFER(obj_desc, bytes_to_dump);			break;		default:			break;		}		/* If value is NOT an internal object, we are done */		if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) !=		    ACPI_DESC_TYPE_OPERAND) {			goto cleanup;		}		/*		 * Valid object, get the pointer to next level, if any		 */		switch (obj_type) {		case ACPI_TYPE_BUFFER:		case ACPI_TYPE_STRING:			/*			 * NOTE: takes advantage of common fields between string/buffer			 */			bytes_to_dump = obj_desc->string.length;			obj_desc = (void *)obj_desc->string.pointer;			acpi_os_printf("(Buffer/String pointer %p length %X)\n",				       obj_desc, bytes_to_dump);			ACPI_DUMP_BUFFER(obj_desc, bytes_to_dump);			goto cleanup;		case ACPI_TYPE_BUFFER_FIELD:			obj_desc =			    (union acpi_operand_object *)obj_desc->buffer_field.			    buffer_obj;			break;		case ACPI_TYPE_PACKAGE:			obj_desc = (void *)obj_desc->package.elements;			break;		case ACPI_TYPE_METHOD:			obj_desc = (void *)obj_desc->method.aml_start;			break;		case ACPI_TYPE_LOCAL_REGION_FIELD:			obj_desc = (void *)obj_desc->field.region_obj;			break;		case ACPI_TYPE_LOCAL_BANK_FIELD:			obj_desc = (void *)obj_desc->bank_field.region_obj;			break;		case ACPI_TYPE_LOCAL_INDEX_FIELD:			obj_desc = (void *)obj_desc->index_field.index_obj;			break;		default:			goto cleanup;		}		obj_type = ACPI_TYPE_INVALID;	/* Terminate loop after next pass */	}      cleanup:	acpi_os_printf("\n");	return (AE_OK);}#ifdef ACPI_FUTURE_USAGE/******************************************************************************* * * FUNCTION:    acpi_ns_dump_objects * * PARAMETERS:  Type                - Object type to be dumped *              display_type        - 0 or ACPI_DISPLAY_SUMMARY *              max_depth           - Maximum depth of dump. Use ACPI_UINT32_MAX *                                    for an effectively unlimited depth. *              owner_id            - Dump only objects owned by this ID.  Use *                                    ACPI_UINT32_MAX to match all owners. *              start_handle        - Where in namespace to start/end search * * RETURN:      None * * DESCRIPTION: Dump typed objects within the loaded namespace. *              Uses acpi_ns_walk_namespace in conjunction with acpi_ns_dump_one_object. * ******************************************************************************/voidacpi_ns_dump_objects(acpi_object_type type,		     u8 display_type,		     u32 max_depth,		     acpi_owner_id owner_id, acpi_handle start_handle){	struct acpi_walk_info info;	ACPI_FUNCTION_ENTRY();	info.debug_level = ACPI_LV_TABLES;	info.owner_id = owner_id;	info.display_type = display_type;	(void)acpi_ns_walk_namespace(type, start_handle, max_depth,				     ACPI_NS_WALK_NO_UNLOCK,				     acpi_ns_dump_one_object, (void *)&info,				     NULL);}#endif				/* ACPI_FUTURE_USAGE *//******************************************************************************* * * FUNCTION:    acpi_ns_dump_entry * * PARAMETERS:  Handle              - Node to be dumped *              debug_level         - Output level * * RETURN:      None * * DESCRIPTION: Dump a single Node * ******************************************************************************/void acpi_ns_dump_entry(acpi_handle handle, u32 debug_level){	struct acpi_walk_info info;	ACPI_FUNCTION_ENTRY();	info.debug_level = debug_level;	info.owner_id = ACPI_OWNER_ID_MAX;	info.display_type = ACPI_DISPLAY_SUMMARY;	(void)acpi_ns_dump_one_object(handle, 1, &info, NULL);}#ifdef ACPI_ASL_COMPILER/******************************************************************************* * * FUNCTION:    acpi_ns_dump_tables * * PARAMETERS:  search_base         - Root of subtree to be dumped, or *                                    NS_ALL to dump the entire namespace *              max_depth           - Maximum depth of dump.  Use INT_MAX *                                    for an effectively unlimited depth. * * RETURN:      None * * DESCRIPTION: Dump the name space, or a portion of it. * ******************************************************************************/void acpi_ns_dump_tables(acpi_handle search_base, u32 max_depth){	acpi_handle search_handle = search_base;	ACPI_FUNCTION_TRACE("ns_dump_tables");	if (!acpi_gbl_root_node) {		/*		 * If the name space has not been initialized,		 * there is nothing to dump.		 */		ACPI_DEBUG_PRINT((ACPI_DB_TABLES,				  "namespace not initialized!\n"));		return_VOID;	}	if (ACPI_NS_ALL == search_base) {		/* Entire namespace */		search_handle = acpi_gbl_root_node;		ACPI_DEBUG_PRINT((ACPI_DB_TABLES, "\\\n"));	}	acpi_ns_dump_objects(ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, max_depth,			     ACPI_OWNER_ID_MAX, search_handle);	return_VOID;}#endif				/* _ACPI_ASL_COMPILER */#endif				/* defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) */

⌨️ 快捷键说明

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