// トラッキングの初期化 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); } }
// 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; }