Пример #1
0
void *lmm_alloc_aligned(lmm_t *lmm, int size, lmm_flags_t flags,
			int align_bits, unsigned int align_ofs)
{
	return lmm_alloc_gen(lmm, size, flags,
			     align_bits, align_ofs,
			     0, -1);
}
Пример #2
0
/* Remove any memory in the specified range from the free memory list.  */
void malloc_reserve(vm_offset_t rstart, vm_offset_t rend)
{
	/*printf("malloc_reserve %08x-%08x\n", rstart, rend);*/
	while (rstart < rend)
	{
		vm_offset_t size;
		lmm_flags_t flags;
		void *ptr;

		/*printf("lmm_find_free %08x ", rstart);*/
		lmm_find_free(&malloc_lmm, &rstart, &size, &flags);
		/*printf(" returned %08x-%08x (size %08x) flags %08x\n",
			rstart, rstart+size, size, flags);*/
		if ((size == 0) || (rstart >= rend))
			break;
		if (rstart + size > rend)
			size = rend - rstart;
		/*printf("reserving %08x-%08x\n", rstart, rstart+size);*/
		ptr = lmm_alloc_gen(&malloc_lmm, size, flags, 0, 0,
				    rstart, size);
		assert((vm_offset_t)ptr == rstart);
	}
}
Пример #3
0
void lmm_remove_free(lmm_t *lmm, void *block, oskit_size_t block_size)
{
	oskit_addr_t rstart = (oskit_addr_t)block;
	oskit_addr_t rend = rstart + block_size;
	assert(rend > rstart);

	while (rstart < rend)
	{
		oskit_addr_t size;
		lmm_flags_t flags;
		void *ptr;

		lmm_find_free(lmm, &rstart, &size, &flags);
		assert(rstart >= (oskit_addr_t)block);
		if ((size == 0) || (rstart >= rend))
			break;
		if (rstart + size > rend)
			size = rend - rstart;
		ptr = lmm_alloc_gen(lmm, size, flags, 0, 0,
				    rstart, size);
		assert((oskit_addr_t)ptr == rstart);
	}
}
Пример #4
0
void *lmm_alloc_page(lmm_t *lmm, lmm_flags_t flags)
{
	return lmm_alloc_gen(lmm, PAGE_SIZE, flags, PAGE_SHIFT, 0,
			     (vm_offset_t)0, (vm_size_t)-1);
}
Пример #5
0
void *lmm_alloc_page(lmm_t *lmm, lmm_flags_t flags)
{
	return lmm_alloc_gen(lmm, PAGE_SIZE, flags, PAGE_SHIFT, 0,
			     0, -1);
}