// トラッキングの解放 void FreeTracking() { UINT i; // ロック削除 OSDeleteLock(obj_lock); OSDeleteLock(obj_id_lock); OSDeleteLock(cs_lock); cs_lock = NULL; obj_id_lock = NULL; obj_lock = NULL; // すべての要素を解放 for (i = 0; i < TRACKING_NUM_ARRAY; i++) { if (hashlist[i] != NULL) { TRACKING_LIST *t = hashlist[i]; while (true) { TRACKING_LIST *t2 = t; TRACKING_OBJECT *o = t->Object; FreeCallStack(o->CallStack); OSMemoryFree(o); t = t->Next; OSMemoryFree(t2); if (t == NULL) { break; } } } } // リスト解放 OSMemoryFree(hashlist); }
// Release the tracking void FreeTracking() { UINT i; // Delete the lock OSDeleteLock(obj_lock); OSDeleteLock(obj_id_lock); OSDeleteLock(cs_lock); cs_lock = NULL; obj_id_lock = NULL; obj_lock = NULL; // Release all of the elements for (i = 0;i < TRACKING_NUM_ARRAY;i++) { if (hashlist[i] != NULL) { TRACKING_LIST *t = hashlist[i]; while (true) { TRACKING_LIST *t2 = t; TRACKING_OBJECT *o = t->Object; FreeCallStack(o->CallStack); OSMemoryFree(o); t = t->Next; OSMemoryFree(t2); if (t == NULL) { break; } } } } // Release the list OSMemoryFree(hashlist); }
// Delete the lock object void DeleteLock(LOCK *lock) { // Validate arguments if (lock == NULL) { return; } // KS KS_INC(KS_DELETELOCK_COUNT); KS_DEC(KS_CURRENT_LOCK_COUNT); OSDeleteLock(lock); }