Beispiel #1
0
acpi_status
acpi_db_classify_one_object (
	acpi_handle             obj_handle,
	u32                     nesting_level,
	void                    *context,
	void                    **return_value)
{
	acpi_namespace_node     *node;
	acpi_operand_object     *obj_desc;
	u32                     type;


	acpi_gbl_num_nodes++;

	node = (acpi_namespace_node *) obj_handle;
	obj_desc = ((acpi_namespace_node *) obj_handle)->object;

	acpi_db_enumerate_object (obj_desc);

	type = node->type;
	if (type > INTERNAL_TYPE_NODE_MAX)
	{
		acpi_gbl_node_type_count_misc++;
	}

	else
	{
		acpi_gbl_node_type_count [type]++;
	}

	return AE_OK;


	/* TBD: These need to be counted during the initial parsing phase */
	/*
	if (Acpi_ps_is_named_op (Op->Opcode))
	{
		Num_nodes++;
	}

	if (Is_method)
	{
		Num_method_elements++;
	}

	Num_grammar_elements++;
	Op = Acpi_ps_get_depth_next (Root, Op);

	Size_of_parse_tree          = (Num_grammar_elements - Num_method_elements) * (u32) sizeof (acpi_parse_object);
	Size_of_method_trees        = Num_method_elements * (u32) sizeof (acpi_parse_object);
	Size_of_node_entries        = Num_nodes * (u32) sizeof (acpi_namespace_node);
	Size_of_acpi_objects        = Num_nodes * (u32) sizeof (acpi_operand_object);

	*/
}
Beispiel #2
0
static acpi_status
acpi_db_classify_one_object(acpi_handle obj_handle,
			    u32 nesting_level,
			    void *context, void **return_value)
{
	struct acpi_namespace_node *node;
	union acpi_operand_object *obj_desc;
	u32 type;

	acpi_gbl_num_nodes++;

	node = (struct acpi_namespace_node *)obj_handle;
	obj_desc = acpi_ns_get_attached_object(node);

	acpi_db_enumerate_object(obj_desc);

	type = node->type;
	if (type > ACPI_TYPE_NS_NODE_MAX) {
		acpi_gbl_node_type_count_misc++;
	} else {
		acpi_gbl_node_type_count[type]++;
	}

	return (AE_OK);

#ifdef ACPI_FUTURE_IMPLEMENTATION

	/* TBD: These need to be counted during the initial parsing phase */

	if (acpi_ps_is_named_op(op->opcode)) {
		num_nodes++;
	}

	if (is_method) {
		num_method_elements++;
	}

	num_grammar_elements++;
	op = acpi_ps_get_depth_next(root, op);

	size_of_parse_tree = (num_grammar_elements - num_method_elements) *
	    (u32)sizeof(union acpi_parse_object);
	size_of_method_trees =
	    num_method_elements * (u32)sizeof(union acpi_parse_object);
	size_of_node_entries =
	    num_nodes * (u32)sizeof(struct acpi_namespace_node);
	size_of_acpi_objects =
	    num_nodes * (u32)sizeof(union acpi_operand_object);
#endif
}
Beispiel #3
0
static void acpi_db_enumerate_object(union acpi_operand_object *obj_desc)
{
	u32 i;

	if (!obj_desc) {
		return;
	}

	/* Enumerate this object first */

	acpi_gbl_num_objects++;

	if (obj_desc->common.type > ACPI_TYPE_NS_NODE_MAX) {
		acpi_gbl_obj_type_count_misc++;
	} else {
		acpi_gbl_obj_type_count[obj_desc->common.type]++;
	}

	/* Count the sub-objects */

	switch (obj_desc->common.type) {
	case ACPI_TYPE_PACKAGE:

		for (i = 0; i < obj_desc->package.count; i++) {
			acpi_db_enumerate_object(obj_desc->package.elements[i]);
		}
		break;

	case ACPI_TYPE_DEVICE:

		acpi_db_enumerate_object(obj_desc->device.notify_list[0]);
		acpi_db_enumerate_object(obj_desc->device.notify_list[1]);
		acpi_db_enumerate_object(obj_desc->device.handler);
		break;

	case ACPI_TYPE_BUFFER_FIELD:

		if (acpi_ns_get_secondary_object(obj_desc)) {
			acpi_gbl_obj_type_count[ACPI_TYPE_BUFFER_FIELD]++;
		}
		break;

	case ACPI_TYPE_REGION:

		acpi_gbl_obj_type_count[ACPI_TYPE_LOCAL_REGION_FIELD]++;
		acpi_db_enumerate_object(obj_desc->region.handler);
		break;

	case ACPI_TYPE_POWER:

		acpi_db_enumerate_object(obj_desc->power_resource.
					 notify_list[0]);
		acpi_db_enumerate_object(obj_desc->power_resource.
					 notify_list[1]);
		break;

	case ACPI_TYPE_PROCESSOR:

		acpi_db_enumerate_object(obj_desc->processor.notify_list[0]);
		acpi_db_enumerate_object(obj_desc->processor.notify_list[1]);
		acpi_db_enumerate_object(obj_desc->processor.handler);
		break;

	case ACPI_TYPE_THERMAL:

		acpi_db_enumerate_object(obj_desc->thermal_zone.notify_list[0]);
		acpi_db_enumerate_object(obj_desc->thermal_zone.notify_list[1]);
		acpi_db_enumerate_object(obj_desc->thermal_zone.handler);
		break;

	default:

		break;
	}
}
Beispiel #4
0
void
acpi_db_enumerate_object (
	acpi_operand_object     *obj_desc)
{
	u32                     type;
	u32                     i;


	if (!obj_desc)
	{
		return;
	}


	/* Enumerate this object first */

	acpi_gbl_num_objects++;

	type = obj_desc->common.type;
	if (type > INTERNAL_TYPE_NODE_MAX)
	{
		acpi_gbl_obj_type_count_misc++;
	}
	else
	{
		acpi_gbl_obj_type_count [type]++;
	}

	/* Count the sub-objects */

	switch (type)
	{
	case ACPI_TYPE_PACKAGE:
		for (i = 0; i< obj_desc->package.count; i++)
		{
			acpi_db_enumerate_object (obj_desc->package.elements[i]);
		}
		break;

	case ACPI_TYPE_DEVICE:
		acpi_db_enumerate_object (obj_desc->device.sys_handler);
		acpi_db_enumerate_object (obj_desc->device.drv_handler);
		acpi_db_enumerate_object (obj_desc->device.addr_handler);
		break;

	case ACPI_TYPE_REGION:
		acpi_db_enumerate_object (obj_desc->region.addr_handler);
		break;

	case ACPI_TYPE_POWER:
		acpi_db_enumerate_object (obj_desc->power_resource.sys_handler);
		acpi_db_enumerate_object (obj_desc->power_resource.drv_handler);
		break;

	case ACPI_TYPE_PROCESSOR:
		acpi_db_enumerate_object (obj_desc->processor.sys_handler);
		acpi_db_enumerate_object (obj_desc->processor.drv_handler);
		acpi_db_enumerate_object (obj_desc->processor.addr_handler);
		break;

	case ACPI_TYPE_THERMAL:
		acpi_db_enumerate_object (obj_desc->thermal_zone.sys_handler);
		acpi_db_enumerate_object (obj_desc->thermal_zone.drv_handler);
		acpi_db_enumerate_object (obj_desc->thermal_zone.addr_handler);
		break;
	}
}