mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-06-07 09:41:30 +00:00
Removed dead funcs in EFI stub module
Due to the last patches, some funcs in malloc.c and stdlib.h files for
EFI stub module are no longer used. This commit just removes them, no
other changes is being introduced. The funcs are:
emalloc/efree, calloc/malloc/free, strstr/strdup
Tracked-On:#1260
Signed-off-by: Chaohong Guo <chaohong.guo@intel.com>
Ackedr-by: Gen Zheng <gen.zheng@intel.com>
This commit is contained in:
@@ -93,143 +93,6 @@ failed:
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* emalloc - Allocate memory with a strict alignment requirement
|
||||
* @size: size in bytes of the requested allocation
|
||||
* @align: the required alignment of the allocation
|
||||
* @addr: a pointer to the allocated address on success
|
||||
*
|
||||
* If we cannot satisfy @align we return 0.
|
||||
*
|
||||
* FIXME: This function cannot guarantee to return address under 4G,
|
||||
* and the hypervisor cannot handle params, which address is above 4G,
|
||||
* delivered from efi stub.
|
||||
*/
|
||||
EFI_STATUS emalloc(UINTN size, UINTN align, EFI_PHYSICAL_ADDRESS *addr)
|
||||
{
|
||||
UINTN map_size, map_key, desc_size;
|
||||
EFI_MEMORY_DESCRIPTOR *map_buf;
|
||||
UINTN d, map_end;
|
||||
UINT32 desc_version;
|
||||
EFI_STATUS err;
|
||||
UINTN nr_pages = EFI_SIZE_TO_PAGES(size);
|
||||
|
||||
err = memory_map(&map_buf, &map_size, &map_key,
|
||||
&desc_size, &desc_version);
|
||||
if (err != EFI_SUCCESS)
|
||||
goto fail;
|
||||
|
||||
d = (UINTN)map_buf;
|
||||
map_end = (UINTN)map_buf + map_size;
|
||||
|
||||
for (; d < map_end; d += desc_size) {
|
||||
EFI_MEMORY_DESCRIPTOR *desc;
|
||||
EFI_PHYSICAL_ADDRESS start, end, aligned;
|
||||
|
||||
desc = (EFI_MEMORY_DESCRIPTOR *)d;
|
||||
if (desc->Type != EfiConventionalMemory)
|
||||
continue;
|
||||
|
||||
if (desc->NumberOfPages < nr_pages)
|
||||
continue;
|
||||
|
||||
start = desc->PhysicalStart;
|
||||
end = start + (desc->NumberOfPages << EFI_PAGE_SHIFT);
|
||||
|
||||
/* Low-memory is super-precious! */
|
||||
if (end <= 1 << 20)
|
||||
continue;
|
||||
if (start < 1 << 20) {
|
||||
size -= (1 << 20) - start;
|
||||
start = (1 << 20);
|
||||
}
|
||||
|
||||
aligned = (start + align -1) & ~(align -1);
|
||||
|
||||
if ((aligned + size) <= end) {
|
||||
err = allocate_pages(AllocateAddress, EfiLoaderData,
|
||||
nr_pages, &aligned);
|
||||
if (err == EFI_SUCCESS) {
|
||||
*addr = aligned;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (d == map_end)
|
||||
err = EFI_OUT_OF_RESOURCES;
|
||||
|
||||
free_pool(map_buf);
|
||||
fail:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* efree - Return memory allocated with emalloc
|
||||
* @memory: the address of the emalloc() allocation
|
||||
* @size: the size of the allocation
|
||||
*/
|
||||
void efree(EFI_PHYSICAL_ADDRESS memory, UINTN size)
|
||||
{
|
||||
UINTN nr_pages = EFI_SIZE_TO_PAGES(size);
|
||||
|
||||
free_pages(memory, nr_pages);
|
||||
}
|
||||
|
||||
/**
|
||||
* malloc - Allocate memory from the EfiLoaderData pool
|
||||
* @size: size in bytes of the requested allocation
|
||||
*
|
||||
* Return a pointer to an allocation of @size bytes of type
|
||||
* EfiLoaderData.
|
||||
*/
|
||||
void *malloc(UINTN size)
|
||||
{
|
||||
EFI_STATUS err;
|
||||
void *buffer;
|
||||
|
||||
err = allocate_pool(EfiLoaderData, size, &buffer);
|
||||
if (err != EFI_SUCCESS)
|
||||
buffer = NULL;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* free - Release memory to the EfiLoaderData pool
|
||||
* @buffer: pointer to the malloc() allocation to free
|
||||
*/
|
||||
void free(void *buffer)
|
||||
{
|
||||
if (buffer)
|
||||
free_pool(buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* calloc - Allocate zeroed memory for an array of elements
|
||||
* @nmemb: number of elements
|
||||
* @size: size of each element
|
||||
*/
|
||||
void *calloc(UINTN nmemb, UINTN size)
|
||||
{
|
||||
void *buffer;
|
||||
|
||||
/*
|
||||
* There's no equivalent of UINTN_MAX, so for safety we refuse to
|
||||
* allocate anything larger than 32 bits.
|
||||
*/
|
||||
UINTN bytes = nmemb * size;
|
||||
if ((nmemb | size) > 0xffffU) {
|
||||
if (size && bytes / size != nmemb)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer = malloc(bytes);
|
||||
if (buffer)
|
||||
(void)memset(buffer, 0, bytes);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
EFI_STATUS dump_e820(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user