コード例 #1
0
ファイル: Tracking.c プロジェクト: falcon8823/utvpn
// 新しいオブジェクトを追跡リストに入れる
void TrackNewObj(UINT64 addr, char *name, UINT size)
{
    TRACKING_OBJECT *o;
    UINT new_id;
    // 引数チェック
    if (addr == 0 || name == NULL)
    {
        return;
    }

    if (IsMemCheck() == false)
    {
        // リリースモードでは追跡しない
        return;
    }

    if (disable_tracking)
    {
        return;
    }

    // 新しい ID の生成
    OSLock(obj_id_lock);
    {
        new_id = ++obj_id;
    }
    OSUnlock(obj_id_lock);

    o = OSMemoryAlloc(sizeof(TRACKING_OBJECT));
    o->Id = new_id;
    o->Address = addr;
    o->Name = name;
    o->Size = size;
    o->CreatedDate = LocalTime64();
    o->CallStack = WalkDownCallStack(GetCallStack(), 2);

    o->FileName[0] = 0;
    o->LineNumber = 0;

    LockTrackingList();
    {
        InsertTrackingList(o);
    }
    UnlockTrackingList();
}
コード例 #2
0
ファイル: Tracking.c プロジェクト: BIGbozi/SoftEtherVPN
// Put a new object into the tracking list
void TrackNewObj(UINT64 addr, char *name, UINT size)
{
	TRACKING_OBJECT *o;
	UINT new_id;
	// Validate arguments
	if (addr == 0 || name == NULL)
	{
		return;
	}

	if (IsMemCheck() == false)
	{
		// Don't track in the release mode
		return;
	}

	if (disable_tracking)
	{
		return;
	}

	// Generate a new ID
	OSLock(obj_id_lock);
	{
		new_id = ++obj_id;
	}
	OSUnlock(obj_id_lock);

	o = OSMemoryAlloc(sizeof(TRACKING_OBJECT));
	o->Id = new_id;
	o->Address = addr;
	o->Name = name;
	o->Size = size;
	o->CreatedDate = LocalTime64();
	o->CallStack = WalkDownCallStack(GetCallStack(), 2);

	o->FileName[0] = 0;
	o->LineNumber = 0;

	LockTrackingList();
	{
		InsertTrackingList(o);
	}
	UnlockTrackingList();
}
コード例 #3
0
ファイル: Tracking.c プロジェクト: falcon8823/utvpn
// 追跡しているオブジェクトのサイズを変更する
void TrackChangeObjSize(UINT64 addr, UINT size, UINT64 new_addr)
{
    TRACKING_OBJECT *o;
    // 引数チェック
    if (addr == 0)
    {
        return;
    }

    if (IsMemCheck() == false)
    {
        // リリースモードでは追跡しない
        return;
    }

    if (disable_tracking)
    {
        return;
    }

    LockTrackingList();
    {
        o = SearchTrackingList(addr);
        if (o == NULL)
        {
            UnlockTrackingList();
            return;
        }

        DeleteTrackingList(o, false);

        o->Size = size;
        o->Address = new_addr;

        InsertTrackingList(o);
    }
    UnlockTrackingList();
}
コード例 #4
0
ファイル: Tracking.c プロジェクト: BIGbozi/SoftEtherVPN
// Change the size of the object being tracked
void TrackChangeObjSize(UINT64 addr, UINT size, UINT64 new_addr)
{
	TRACKING_OBJECT *o;
	// Validate arguments
	if (addr == 0)
	{
		return;
	}

	if (IsMemCheck() == false)
	{
		// Don't track in the release mode
		return;
	}

	if (disable_tracking)
	{
		return;
	}

	LockTrackingList();
	{
		o = SearchTrackingList(addr);
		if (o == NULL)
		{
			UnlockTrackingList();
			return;
		}

		DeleteTrackingList(o, false);

		o->Size = size;
		o->Address = new_addr;

		InsertTrackingList(o);
	}
	UnlockTrackingList();
}