Пример #1
0
// トラッキングの初期化
void InitTracking()
{
    UINT i;
    CALLSTACK_DATA *s;

    // ハッシュリスト初期化
    hashlist = (TRACKING_LIST **)OSMemoryAlloc(sizeof(TRACKING_LIST *) * TRACKING_NUM_ARRAY);

    for (i = 0; i < TRACKING_NUM_ARRAY; i++)
    {
        hashlist[i] = NULL;
    }

    obj_id = 0;

    // ロック作成
    obj_lock = OSNewLock();
    obj_id_lock = OSNewLock();
    cs_lock = OSNewLock();

    s = GetCallStack();
    if (s == NULL)
    {
        do_not_get_callstack = true;
    }
    else
    {
        do_not_get_callstack = false;
        FreeCallStack(s);
    }
}
Пример #2
0
// Create a lock object
LOCK *NewLockMain()
{
	LOCK *lock;
	UINT retry = 0;

	while (true)
	{
		if ((retry++) > OBJECT_ALLOC__MAX_RETRY)
		{
			AbortExitEx("error: OSNewLock() failed.\n\n");
		}
		lock = OSNewLock();
		if (lock != NULL)
		{
			break;
		}
		SleepThread(OBJECT_ALLOC_FAIL_SLEEP_TIME);
	}

	return lock;
}