ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Method %p\n", object)); 
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Method %p\n", object)); 
acpi_ut_delete_internal_obj (	union acpi_operand_object       *object){	void                            *obj_pointer = NULL;	union acpi_operand_object       *handler_desc;	union acpi_operand_object       *second_desc;	union acpi_operand_object       *next_desc;	ACPI_FUNCTION_TRACE_PTR ("ut_delete_internal_obj", object);	if (!object) {		return_VOID;	}	/*	 * Must delete or free any pointers within the object that are not	 * actual ACPI objects (for example, a raw buffer pointer).	 */	switch (ACPI_GET_OBJECT_TYPE (object)) {	case ACPI_TYPE_STRING:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** String %p, ptr %p\n",			object, object->string.pointer));		/* Free the actual string buffer */		if (!(object->common.flags & AOPOBJ_STATIC_POINTER)) {			/* But only if it is NOT a pointer into an ACPI table */			obj_pointer = object->string.pointer;		}		break;	case ACPI_TYPE_BUFFER:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** Buffer %p, ptr %p\n",			object, object->buffer.pointer));		/* Free the actual buffer */		if (!(object->common.flags & AOPOBJ_STATIC_POINTER)) {			/* But only if it is NOT a pointer into an ACPI table */			obj_pointer = object->buffer.pointer;		}		break;	case ACPI_TYPE_PACKAGE:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, " **** Package of count %X\n",			object->package.count));		/*		 * Elements of the package are not handled here, they are deleted		 * separately		 */		/* Free the (variable length) element pointer array */		obj_pointer = object->package.elements;		break;	case ACPI_TYPE_DEVICE:		if (object->device.gpe_block) {			(void) acpi_ev_delete_gpe_block (object->device.gpe_block);		}		/* Walk the handler list for this device */		handler_desc = object->device.handler;		while (handler_desc) {			next_desc = handler_desc->address_space.next;			acpi_ut_remove_reference (handler_desc);			handler_desc = next_desc;		}		break;	case ACPI_TYPE_MUTEX:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Mutex %p, Semaphore %p\n",			object, object->mutex.semaphore));		acpi_ex_unlink_mutex (object);		(void) acpi_os_delete_semaphore (object->mutex.semaphore);		break;	case ACPI_TYPE_EVENT:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Event %p, Semaphore %p\n",			object, object->event.semaphore));		(void) acpi_os_delete_semaphore (object->event.semaphore);		object->event.semaphore = NULL;		break;	case ACPI_TYPE_METHOD:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Method %p\n", object));		/* Delete the method semaphore if it exists */		if (object->method.semaphore) {			(void) acpi_os_delete_semaphore (object->method.semaphore);			object->method.semaphore = NULL;		}		break;	case ACPI_TYPE_REGION:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Region %p\n", object));		second_desc = acpi_ns_get_secondary_object (object);		if (second_desc) {			/*			 * Free the region_context if and only if the handler is one of the			 * default handlers -- and therefore, we created the context object			 * locally, it was not created by an external caller.			 */			handler_desc = object->region.handler;			if (handler_desc) {				if (handler_desc->address_space.hflags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) {					obj_pointer = second_desc->extra.region_context;				}				acpi_ut_remove_reference (handler_desc);			}			/* Now we can free the Extra object */			acpi_ut_delete_object_desc (second_desc);		}		break;	case ACPI_TYPE_BUFFER_FIELD:		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Buffer Field %p\n", object));		second_desc = acpi_ns_get_secondary_object (object);		if (second_desc) {			acpi_ut_delete_object_desc (second_desc);		}		break;	default:		break;	}	/* Free any allocated memory (pointer within the object) found above */	if (obj_pointer) {		ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object Subptr %p\n",				obj_pointer));		ACPI_MEM_FREE (obj_pointer);	}	/* Now the object can be safely deleted */	ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object %p [%s]\n",			object, acpi_ut_get_object_type_name (object)));	acpi_ut_delete_object_desc (object);	return_VOID;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/utdelete.c/clean/drivers/acpi/utilities/utdelete.c