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

📄 nsdump.c

📁 h内核
💻 C
📖 第 1 页 / 共 2 页
字号:
			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);			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 %s, %X)\n",					acpi_ut_get_type_name (obj_type), obj_type);				bytes_to_dump = sizeof (union acpi_operand_object);			}			break;		default:			acpi_os_printf (				"(String or Buffer ptr - not an object descriptor) [%s]\n",				acpi_ut_get_descriptor_name (obj_desc));			bytes_to_dump = 16;			break;		}		ACPI_DUMP_BUFFER (obj_desc, bytes_to_dump);		/* 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_STRING:			obj_desc = (void *) obj_desc->string.pointer;			break;		case ACPI_TYPE_BUFFER:			obj_desc = (void *) obj_desc->buffer.pointer;			break;		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 *              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 * * 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,	u32                             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);}/******************************************************************************* * * 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. * * DESCRIPTION: Dump the name space, or a portion of it. * ******************************************************************************/voidacpi_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_UINT32_MAX, search_handle);	return_VOID;}#endif  /*  ACPI_FUTURE_USAGE  *//******************************************************************************* * * FUNCTION:    acpi_ns_dump_entry * * PARAMETERS:  Handle              - Node to be dumped *              debug_level         - Output level * * DESCRIPTION: Dump a single Node * ******************************************************************************/voidacpi_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_UINT32_MAX;	info.display_type = ACPI_DISPLAY_SUMMARY;	(void) acpi_ns_dump_one_object (handle, 1, &info, NULL);}#endif

⌨️ 快捷键说明

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