AllocMemBlocks()
function:
void *AllocMemBlocks( int32 size, uint32 typebits )
size
argument specifies the amount of memory to transfer, in bytes. If the specified size is not a multiple of the page size for the type of memory requested, the kernel transfers enough full pages to satisfy the request.
The first 4 bytes of the allocated block contain the actual number of bytes allocated. This isn't true when MEMTYPE_FILL
is supplied.
The typebits
argument specifies the type of memory to transfer. This argument can contain any of the following memory allocation flags: MEMTYPE_ANY
, MEMTYPE_VRAM
, MEMTYPE_DRAM
, MEMTYPE_BANKSELECT
, MEMTYPE_BANK1
, MEMTYPE_BANK2
, MEMTYPE_DMA
, MEMTYPE_CEL
, MEMTYPE_AUDIO
, and MEMTYPE_DSP
. For descriptions of these flags, see . You must always set the MEMTYPE_TASKMEM
flag when using this function.
AllocMemBlocks()
returns a pointer to the memory that was transferred. When you get the memory, you must call a function to free it, such as
FreeMemToMemList()
to move it to a specific memory list or
FreeMemToMemLists()
to move it to a specific memory pool. For either
function, use the pointer returned by AllocMemBlocks()
as the value
of the p
argument. Use the size value that is stored in the first 4 bytes in the memory returned by the AllocMemBlocks()
for the size argument.