memblock can now self re-allocate its internal buffers
memory allocated by memblock_alloc() can now be limited to a certain region.
This commit is contained in:
@@ -2,11 +2,15 @@
|
||||
#include <stddef.h>
|
||||
#include <inttypes.h>
|
||||
#include <sys/mman.h>
|
||||
#include <socks/types.h>
|
||||
#include <socks/memblock.h>
|
||||
|
||||
/* we're working with 4MiB of simulated system RAM */
|
||||
#define MEMORY_SIZE_MB 128
|
||||
|
||||
#define ALLOC_START_MB 16
|
||||
#define ALLOC_END_MB 18
|
||||
|
||||
/* virtual address of where system memory is mapped */
|
||||
static void *system_memory = NULL;
|
||||
|
||||
@@ -33,6 +37,12 @@ int main(int argc, const char **argv)
|
||||
|
||||
printf("allocated %u MiB (0x%zx bytes) of memory to act as system RAM at %p\n", MEMORY_SIZE_MB, MB_TO_BYTES(MEMORY_SIZE_MB), system_memory);
|
||||
|
||||
uintptr_t voffset = (uintptr_t)system_memory;
|
||||
|
||||
memblock_init(MB_TO_BYTES(ALLOC_START_MB) + voffset, MB_TO_BYTES(ALLOC_END_MB) + voffset, voffset);
|
||||
|
||||
printf("memblock heap initialised in 0x%zx-0x%zx\n", MB_TO_BYTES(ALLOC_START_MB), MB_TO_BYTES(ALLOC_END_MB));
|
||||
|
||||
memblock_add(0, MB_TO_BYTES(MEMORY_SIZE_MB));
|
||||
|
||||
memblock_reserve(0x00000, 0x40000);
|
||||
|
||||
Reference in New Issue
Block a user