#include #include "log.h" #include "kmalloc.h" void testing_kmalloc_alloc(uint32_t size) { uint32_t addr=kballoc(size); testlog("kballoc(%d) returned 0x%08x",size,addr); } void testing_kmalloc_alloc_free(uint32_t size) { uint32_t addr=kballoc(size); testlog("kballoc(%d) returned 0x%08x",size,addr); kbfree(addr); testlog("kbfree(0x%08X)",addr); } // only free even void testing_kmalloc_alloc_free_even(uint32_t size) { uint32_t addr=kballoc(size); testlog("kballoc(%d) returned 0x%08x",size,addr); if(!(size%2)) { kbfree(addr); testlog("kbfree(0x%08X)",addr); } } // only free first void testing_kmalloc_alloc_two_free_first(uint32_t size) { uint32_t addr1=kballoc(size); testlog("kballoc(%d) returned 0x%08x",size,addr1); uint32_t addr2=kballoc(size); testlog("kballoc(%d) returned 0x%08x",size,addr2); kbfree(addr1); testlog("kbfree(0x%08X)",addr1); } void testing_kmalloc() { #ifndef FOOLOS_UNIT_TESTING return; #endif fixme("[TESTING] Create multiple independent tests that start from scratch"); fixme("[TESTING] Check the test results automatically!"); testlog("= UNIT TESTING KMALLOC ="); testlog("* allocating blocks different sizes (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc(i+1); testlog("* allocating and freeing different sizes (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc_free(i+1); testlog("* allocating blocks different sizes (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc(i+1); testlog("* allocating and freeing odd sizes only (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc_free_even(i+1); testlog("* allocating two but freeing first only (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc_two_free_first(i+1); testlog("* allocating two but freeing first only (10-1 blocks)"); for(int i=9;i>=0;i--)testing_kmalloc_alloc_two_free_first(i+1); testlog("* allocating blocks different sizes (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc(i+1); testlog("* allocating and freeing mega blocks"); for(int i=0;i<10;i++)testing_kmalloc_alloc_two_free_first(255); testlog("* allocating two but freeing first only (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc_two_free_first(255-i); testlog("* allocating two but freeing first only (1-10 blocks)"); for(int i=0;i<10;i++)testing_kmalloc_alloc_two_free_first(255-i); }