Пример #1
0
Файл: mm.c Проект: 29n/xunsearch
void *mm_malloc(MM *mm, size_t size)
{
	void *ret;

	if (!mm_lock(mm))
		return NULL;
	ret = mm_malloc_nolock(mm, size);
	mm_unlock(mm);
	return ret;
}
Пример #2
0
Файл: mm.c Проект: 29n/xunsearch
size_t mm_available(MM *mm)
{
	size_t available;

	if (mm != NULL && mm_lock(mm))
	{
		available = mm->available;
		mm_unlock(mm);
		return available;
	}
	return 0;
}
Пример #3
0
Файл: mm.c Проект: 29n/xunsearch
size_t mm_sizeof(MM *mm, void *x)
{
	mm_mem_head *p;
	size_t ret;

	if (mm == NULL || x == NULL || !mm_lock(mm))
		return 0;
	p = PTR_TO_HEAD(x);
	ret = p->size;
	mm_unlock(mm);
	return ret;
}
Пример #4
0
Файл: mm.c Проект: 29n/xunsearch
size_t mm_maxsize(MM *mm)
{
	size_t ret = MM_SIZE(0);
	mm_free_bucket *p;

	if (!mm_lock(mm))
		return 0;

	p = mm->free_list;
	while (p != NULL)
	{
		if (p->size > ret)
			ret = p->size;
		p = p->next;
	}
	mm_unlock(mm);
	return ret - MM_SIZE(0);
}
Пример #5
0
int MM_unlock(void)
{
    if (mm_global == NULL)
        return FALSE;
    return mm_unlock(mm_global);
}
Пример #6
0
Файл: mm.c Проект: 29n/xunsearch
void mm_free(MM *mm, void *x)
{
	mm_lock(mm);
	mm_free_nolock(mm, x);
	mm_unlock(mm);
}