Пример #1
0
// トラッキングの解放
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);
}
Пример #2
0
// 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);
}
Пример #3
0
// 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);
}