void* kma_malloc(kma_size_t size) { if (startOfManagedMemory == NULL) { // get new page and initialize control struct kma_page_t* page; // get one page page = get_page(); printf("start of page in memory %p\n", page->ptr); initPage(page); } // calculate size, plus size of void ptr then rounded up int bufferSize = getAmountOfMemoryToRequest(size); printf("Size:%d Buffer:%d\n", size, bufferSize); // return null if bigger than a page if (bufferSize == -1) { return NULL; } // request memory of rounded up size and return void* buffer = getMemoryPointer(bufferSize); printf("Distance from start of page %d\n", buffer - (void*)startOfManagedMemory); printf("buffer, returned pointer %p, %p\n", buffer, (void*)(((BYTE*) buffer) + sizeof(bufferData_t))); return (void*)(((BYTE*) buffer) + sizeof(bufferData_t)); }
BYTE MemoryStatic::getByte( ADDRESS addr ) { BYTE result = UNKNOWN_BYTE; BYTE * memPtr = getMemoryPointer(addr); if (NULL != memPtr) { result = *memPtr; } return result; }