int main(int argc, char**argv){ /*create data file*/ CREATE_FILE(MMAP_FILE, DATA_FOR_MMAP, DATASIZE_FOR_MMAP); /*test1: test mmap+munmap with 0 offset*/ mmap_test(0); /*test2: test mmap with not 0 offset*/ mmap_test(10); return 0; }
int mmap_find_squence(size_t s) { if (s == 0) return -1; if (s == 1) return mmap_find_first(); for (uint32_t i=0;i<pmm_get_free_block_count()/32;++i) { if (_pmm_mmap[i] != 0xffffffff) { for (int j=0;j<32;++j) { int bit = 1 << j; if (!(_pmm_mmap[i] & bit)) { int start_bit = i*32 + bit; uint32_t free_bit = 0; for (uint32_t count=0;count<=s;++count) { if (!(mmap_test(start_bit+count))) free_bit++; if (free_bit == s) return i*32+j; } } } } } return -1; }
int main(int argc, char **argv) { (void) printf("Congrats! You're running this executable.\n"); (void) printf("Now let's see how you handle the tests...\n"); mmap_test(); null_test(); zero_test(); brk_test(); fault_test(); wait_test(); cow_fork(); fork_test(); return 0; }