Lines Matching full:object

3  * Module Name: utdelete - object deletion and reference count utilities
166 ACPI_OPERAND_OBJECT *Object);
170 ACPI_OPERAND_OBJECT *Object,
178 * PARAMETERS: Object - Object to be deleted
182 * DESCRIPTION: Low level object deletion, after reference counts have been
189 ACPI_OPERAND_OBJECT *Object) in AcpiUtDeleteInternalObj() argument
199 ACPI_FUNCTION_TRACE_PTR (UtDeleteInternalObj, Object); in AcpiUtDeleteInternalObj()
202 if (!Object) in AcpiUtDeleteInternalObj()
208 * Must delete or free any pointers within the object that are not in AcpiUtDeleteInternalObj()
211 switch (Object->Common.Type) in AcpiUtDeleteInternalObj()
216 Object, Object->String.Pointer)); in AcpiUtDeleteInternalObj()
220 if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) in AcpiUtDeleteInternalObj()
224 ObjPointer = Object->String.Pointer; in AcpiUtDeleteInternalObj()
231 Object, Object->Buffer.Pointer)); in AcpiUtDeleteInternalObj()
235 if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) in AcpiUtDeleteInternalObj()
239 ObjPointer = Object->Buffer.Pointer; in AcpiUtDeleteInternalObj()
246 Object->Package.Count)); in AcpiUtDeleteInternalObj()
255 ObjPointer = Object->Package.Elements; in AcpiUtDeleteInternalObj()
260 * Device object also may have a GPE block. in AcpiUtDeleteInternalObj()
264 if (Object->Device.GpeBlock) in AcpiUtDeleteInternalObj()
266 (void) AcpiEvDeleteGpeBlock (Object->Device.GpeBlock); in AcpiUtDeleteInternalObj()
274 /* Walk the address handler list for this object */ in AcpiUtDeleteInternalObj()
276 HandlerDesc = Object->CommonNotify.Handler; in AcpiUtDeleteInternalObj()
289 Object, Object->Mutex.OsMutex)); in AcpiUtDeleteInternalObj()
291 if (Object == AcpiGbl_GlobalLockMutex) in AcpiUtDeleteInternalObj()
298 AcpiOsDeleteMutex (Object->Mutex.OsMutex); in AcpiUtDeleteInternalObj()
303 AcpiExUnlinkMutex (Object); in AcpiUtDeleteInternalObj()
304 AcpiOsDeleteMutex (Object->Mutex.OsMutex); in AcpiUtDeleteInternalObj()
312 Object, Object->Event.OsSemaphore)); in AcpiUtDeleteInternalObj()
314 (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore); in AcpiUtDeleteInternalObj()
315 Object->Event.OsSemaphore = ACPI_SEMAPHORE_NULL; in AcpiUtDeleteInternalObj()
321 "***** Method %p\n", Object)); in AcpiUtDeleteInternalObj()
325 if (Object->Method.Mutex) in AcpiUtDeleteInternalObj()
327 AcpiOsDeleteMutex (Object->Method.Mutex->Mutex.OsMutex); in AcpiUtDeleteInternalObj()
328 AcpiUtDeleteObjectDesc (Object->Method.Mutex); in AcpiUtDeleteInternalObj()
329 Object->Method.Mutex = NULL; in AcpiUtDeleteInternalObj()
332 if (Object->Method.Node) in AcpiUtDeleteInternalObj()
334 Object->Method.Node = NULL; in AcpiUtDeleteInternalObj()
341 "***** Region %p\n", Object)); in AcpiUtDeleteInternalObj()
347 if (!(Object->Region.Node->Flags & ANOBJ_TEMPORARY)) in AcpiUtDeleteInternalObj()
349 AcpiUtRemoveAddressRange (Object->Region.SpaceId, in AcpiUtDeleteInternalObj()
350 Object->Region.Node); in AcpiUtDeleteInternalObj()
353 SecondDesc = AcpiNsGetSecondaryObject (Object); in AcpiUtDeleteInternalObj()
358 * default handlers -- and therefore, we created the context object in AcpiUtDeleteInternalObj()
361 HandlerDesc = Object->Region.Handler; in AcpiUtDeleteInternalObj()
368 /* Remove the region object from the handler list */ in AcpiUtDeleteInternalObj()
372 if (NextDesc == Object) in AcpiUtDeleteInternalObj()
388 "Circular region list in address handler object %p", in AcpiUtDeleteInternalObj()
401 (void) HandlerDesc->AddressSpace.Setup (Object, in AcpiUtDeleteInternalObj()
411 /* Now we can free the Extra object */ in AcpiUtDeleteInternalObj()
415 if (Object->Field.InternalPccBuffer) in AcpiUtDeleteInternalObj()
417 ACPI_FREE(Object->Field.InternalPccBuffer); in AcpiUtDeleteInternalObj()
425 "***** Buffer Field %p\n", Object)); in AcpiUtDeleteInternalObj()
427 SecondDesc = AcpiNsGetSecondaryObject (Object); in AcpiUtDeleteInternalObj()
437 "***** Bank Field %p\n", Object)); in AcpiUtDeleteInternalObj()
439 SecondDesc = AcpiNsGetSecondaryObject (Object); in AcpiUtDeleteInternalObj()
449 "***** Address handler %p\n", Object)); in AcpiUtDeleteInternalObj()
451 AcpiOsDeleteMutex (Object->AddressSpace.ContextMutex); in AcpiUtDeleteInternalObj()
459 /* Free any allocated memory (pointer within the object) found above */ in AcpiUtDeleteInternalObj()
463 ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object Subptr %p\n", in AcpiUtDeleteInternalObj()
468 /* Now the object can be safely deleted */ in AcpiUtDeleteInternalObj()
470 ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS, "%s: Deleting Object %p [%s]\n", in AcpiUtDeleteInternalObj()
471 ACPI_GET_FUNCTION_NAME, Object, AcpiUtGetObjectTypeName (Object))); in AcpiUtDeleteInternalObj()
473 AcpiUtDeleteObjectDesc (Object); in AcpiUtDeleteInternalObj()
486 * DESCRIPTION: This function deletes an internal object list, including both
508 /* Free the combined parameter pointer list and object array */ in AcpiUtDeleteInternalObjectList()
519 * PARAMETERS: Object - Object whose ref count is to be updated
522 * RETURN: None. Sets new reference count within the object
524 * DESCRIPTION: Modify the reference count for an internal acpi object
530 ACPI_OPERAND_OBJECT *Object, in AcpiUtUpdateRefCount() argument
542 if (!Object) in AcpiUtUpdateRefCount()
552 OriginalCount = Object->Common.ReferenceCount; in AcpiUtUpdateRefCount()
561 Object->Common.ReferenceCount = NewCount; in AcpiUtUpdateRefCount()
570 Object)); in AcpiUtUpdateRefCount()
575 Object, Object->Common.Type, in AcpiUtUpdateRefCount()
576 AcpiUtGetObjectTypeName (Object), NewCount)); in AcpiUtUpdateRefCount()
587 Object->Common.ReferenceCount = NewCount; in AcpiUtUpdateRefCount()
596 Object)); in AcpiUtUpdateRefCount()
602 ACPI_GET_FUNCTION_NAME, Object, Object->Common.Type, NewCount)); in AcpiUtUpdateRefCount()
604 /* Actually delete the object on a reference count of zero */ in AcpiUtUpdateRefCount()
608 AcpiUtDeleteInternalObj (Object); in AcpiUtUpdateRefCount()
623 * (A deleted object will have a huge reference count) in AcpiUtUpdateRefCount()
628 "Large Reference Count (0x%X) in object %p, Type=0x%.2X Operation=%s", in AcpiUtUpdateRefCount()
629 NewCount, Object, Object->Common.Type, Message)); in AcpiUtUpdateRefCount()
638 * PARAMETERS: Object - Increment or decrement the ref count for
639 * this object and all sub-objects
644 * DESCRIPTION: Increment or decrement the object reference count
646 * Object references are incremented when:
647 * 1) An object is attached to a Node (namespace object)
648 * 2) An object is copied (all subobjects must be incremented)
650 * Object references are decremented when:
651 * 1) An object is detached from an Node
657 ACPI_OPERAND_OBJECT *Object, in AcpiUtUpdateObjectReference() argument
671 while (Object) in AcpiUtUpdateObjectReference()
675 if (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) in AcpiUtUpdateObjectReference()
678 "Object %p is NS handle\n", Object)); in AcpiUtUpdateObjectReference()
684 * also. Different object types have different subobjects. in AcpiUtUpdateObjectReference()
686 switch (Object->Common.Type) in AcpiUtUpdateObjectReference()
698 PrevObject = Object->CommonNotify.NotifyList[i]; in AcpiUtUpdateObjectReference()
713 for (i = 0; i < Object->Package.Count; i++) in AcpiUtUpdateObjectReference()
719 NextObject = Object->Package.Elements[i]; in AcpiUtUpdateObjectReference()
758 NextObject = Object->BufferField.BufferObj; in AcpiUtUpdateObjectReference()
763 NextObject = Object->BankField.BankObj; in AcpiUtUpdateObjectReference()
765 Object->BankField.RegionObj, Action, &StateList); in AcpiUtUpdateObjectReference()
774 NextObject = Object->IndexField.IndexObj; in AcpiUtUpdateObjectReference()
776 Object->IndexField.DataObj, Action, &StateList); in AcpiUtUpdateObjectReference()
787 * target object. in AcpiUtUpdateObjectReference()
789 if ((Object->Reference.Class == ACPI_REFCLASS_INDEX) || in AcpiUtUpdateObjectReference()
790 (Object->Reference.Class== ACPI_REFCLASS_NAME)) in AcpiUtUpdateObjectReference()
792 NextObject = Object->Reference.Object; in AcpiUtUpdateObjectReference()
804 * Now we can update the count in the main object. This can only in AcpiUtUpdateObjectReference()
806 * main object to be deleted. in AcpiUtUpdateObjectReference()
808 AcpiUtUpdateRefCount (Object, Action); in AcpiUtUpdateObjectReference()
809 Object = NULL; in AcpiUtUpdateObjectReference()
811 /* Move on to the next object to be updated */ in AcpiUtUpdateObjectReference()
815 Object = NextObject; in AcpiUtUpdateObjectReference()
821 Object = State->Update.Object; in AcpiUtUpdateObjectReference()
832 "Could not update object reference count")); in AcpiUtUpdateObjectReference()
850 * PARAMETERS: Object - Object whose reference count is to be
855 * DESCRIPTION: Add one reference to an ACPI object
861 ACPI_OPERAND_OBJECT *Object) in AcpiUtAddReference() argument
867 /* Ensure that we have a valid object */ in AcpiUtAddReference()
869 if (!AcpiUtValidInternalObject (Object)) in AcpiUtAddReference()
876 Object, Object->Common.ReferenceCount)); in AcpiUtAddReference()
880 (void) AcpiUtUpdateObjectReference (Object, REF_INCREMENT); in AcpiUtAddReference()
889 * PARAMETERS: Object - Object whose ref count will be decremented
893 * DESCRIPTION: Decrement the reference count of an ACPI internal object
899 ACPI_OPERAND_OBJECT *Object) in AcpiUtRemoveReference() argument
909 if (!Object || in AcpiUtRemoveReference()
910 (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED)) in AcpiUtRemoveReference()
916 /* Ensure that we have a valid object */ in AcpiUtRemoveReference()
918 if (!AcpiUtValidInternalObject (Object)) in AcpiUtRemoveReference()
925 ACPI_GET_FUNCTION_NAME, Object, Object->Common.ReferenceCount)); in AcpiUtRemoveReference()
928 * Decrement the reference count, and only actually delete the object in AcpiUtRemoveReference()
932 (void) AcpiUtUpdateObjectReference (Object, REF_DECREMENT); in AcpiUtRemoveReference()