int num_of_pages = size / PAGE_SIZE ;
num_of_pages= ROUNDUP(num_of_pages,PAGE_SIZE);
uint32 min=9999;
struct Frame_Info* ptr_frame_info;
int num_of_pages_Kheap = (KERNEL_HEAP_MAX-KERNEL_HEAP_START)/PAGE_SIZE;
uint32 va=0;
uint32 *ptr_table = NULL;
for(int i = KERNEL_HEAP_START ; i < KERNEL_HEAP_MAX ; i+=PAGE_SIZE)
{
int count =0 ;
ptr_frame_info = get_frame_info(ptr_page_directory,(void*)i, &ptr_table);
if (ptr_frame_info == NULL)
{
for(int j = i; j < KERNEL_HEAP_MAX;j+=PAGE_SIZE )
{
ptr_frame_info = get_frame_info(ptr_page_directory,(void*)j, &ptr_table);
if (ptr_frame_info == NULL)
{
count++;
}
else
{
if (count<min && count>=num_of_pages)
{
min=count;
va=i;
break;
}
else
break;
}
}
}
}
uint32 ret=va;
for(int i = 0;i<num_of_pages;i++)
{
ptr_table=NULL;
ptr_frame_info = get_frame_info(ptr_page_directory, (void*)va, &ptr_table);
allocate_frame(&ptr_frame_info) ;
map_frame(ptr_page_directory, ptr_frame_info, (void*)va, PERM_USER|PERM_WRITEABLE);
va+=PAGE_SIZE;
}
//NOTE: Allocation is based on BEST FIT strategy
//NOTE: All kernel heap allocations are multiples of PAGE_SIZE (4KB)
//refer to the project presentation and documentation for details
//TODO: [PROJECT 2019 - BONUS1] Implement the FIRST FIT strategy for Kernel allocation
// Beside the BEST FIT
// use "isKHeapPlacementStrategyFIRSTFIT() ..." functions to check the current strategy
//change this "return" according to your answer
if(ret == 0)
return NULL;
else
return (void*)ret;
aW50IG51bV9vZl9wYWdlcyA9IHNpemUgLyBQQUdFX1NJWkUgOwoJbnVtX29mX3BhZ2VzPSBST1VORFVQKG51bV9vZl9wYWdlcyxQQUdFX1NJWkUpOwoJdWludDMyIG1pbj05OTk5OwoJc3RydWN0IEZyYW1lX0luZm8qIHB0cl9mcmFtZV9pbmZvOwoJaW50IG51bV9vZl9wYWdlc19LaGVhcCA9IChLRVJORUxfSEVBUF9NQVgtS0VSTkVMX0hFQVBfU1RBUlQpL1BBR0VfU0laRTsKCXVpbnQzMiB2YT0wOwoJdWludDMyICpwdHJfdGFibGUgPSBOVUxMOwoJZm9yKGludCBpID0gS0VSTkVMX0hFQVBfU1RBUlQgOyBpIDwgS0VSTkVMX0hFQVBfTUFYIDsgaSs9UEFHRV9TSVpFKQoJewoJCWludCBjb3VudCA9MCA7CgkJcHRyX2ZyYW1lX2luZm8gPSBnZXRfZnJhbWVfaW5mbyhwdHJfcGFnZV9kaXJlY3RvcnksKHZvaWQqKWksICZwdHJfdGFibGUpOwoJCWlmIChwdHJfZnJhbWVfaW5mbyA9PSBOVUxMKQoJCXsKCQkgICAgZm9yKGludCBqID0gaTsgaiA8IEtFUk5FTF9IRUFQX01BWDtqKz1QQUdFX1NJWkUgKQoJCSAgICB7CgkJICAgIAlwdHJfZnJhbWVfaW5mbyA9IGdldF9mcmFtZV9pbmZvKHB0cl9wYWdlX2RpcmVjdG9yeSwodm9pZCopaiwgJnB0cl90YWJsZSk7CgkJICAgIAlpZiAocHRyX2ZyYW1lX2luZm8gPT0gTlVMTCkKCQkgICAgCXsKCQkgICAgCQljb3VudCsrOwoJCSAgICAJfQoJCSAgICAJZWxzZQoJCSAgICAJewoJCSAgICAJCWlmIChjb3VudDxtaW4gJiYgY291bnQ+PW51bV9vZl9wYWdlcykKCQkgICAgCQl7CgkJICAgIAkJCW1pbj1jb3VudDsKCQkgICAgCQkJdmE9aTsKCQkgICAgCQkJYnJlYWs7CgkJICAgIAkJfQoJCSAgICAJCWVsc2UKCQkgICAgCQkJYnJlYWs7CgkJICAgIAl9CgkJICAgIH0KCQl9Cgl9Cgl1aW50MzIgcmV0PXZhOwoJZm9yKGludCBpID0gMDtpPG51bV9vZl9wYWdlcztpKyspCgl7CgkJcHRyX3RhYmxlPU5VTEw7CgkJcHRyX2ZyYW1lX2luZm8gPSBnZXRfZnJhbWVfaW5mbyhwdHJfcGFnZV9kaXJlY3RvcnksICh2b2lkKil2YSwgJnB0cl90YWJsZSk7CgkJYWxsb2NhdGVfZnJhbWUoJnB0cl9mcmFtZV9pbmZvKSA7CgkJbWFwX2ZyYW1lKHB0cl9wYWdlX2RpcmVjdG9yeSwgcHRyX2ZyYW1lX2luZm8sICh2b2lkKil2YSwgUEVSTV9VU0VSfFBFUk1fV1JJVEVBQkxFKTsKCQl2YSs9UEFHRV9TSVpFOwoJfQoKICAgIC8vTk9URTogQWxsb2NhdGlvbiBpcyBiYXNlZCBvbiBCRVNUIEZJVCBzdHJhdGVneQoJLy9OT1RFOiBBbGwga2VybmVsIGhlYXAgYWxsb2NhdGlvbnMgYXJlIG11bHRpcGxlcyBvZiBQQUdFX1NJWkUgKDRLQikKCS8vcmVmZXIgdG8gdGhlIHByb2plY3QgcHJlc2VudGF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzCgoJLy9UT0RPOiBbUFJPSkVDVCAyMDE5IC0gQk9OVVMxXSBJbXBsZW1lbnQgdGhlIEZJUlNUIEZJVCBzdHJhdGVneSBmb3IgS2VybmVsIGFsbG9jYXRpb24KCS8vIEJlc2lkZSB0aGUgQkVTVCBGSVQKCS8vIHVzZSAiaXNLSGVhcFBsYWNlbWVudFN0cmF0ZWd5RklSU1RGSVQoKSAuLi4iIGZ1bmN0aW9ucyB0byBjaGVjayB0aGUgY3VycmVudCBzdHJhdGVneQoKCS8vY2hhbmdlIHRoaXMgInJldHVybiIgYWNjb3JkaW5nIHRvIHlvdXIgYW5zd2VyCglpZihyZXQgPT0gMCkKCXJldHVybiBOVUxMOwoJZWxzZQoJcmV0dXJuICh2b2lkKilyZXQ7Cg==
Main.java:1: error: class, interface, or enum expected
int num_of_pages = size / PAGE_SIZE ;
^
Main.java:1: error: class, interface, or enum expected
int num_of_pages = size / PAGE_SIZE ;
^
Main.java:2: error: class, interface, or enum expected
num_of_pages= ROUNDUP(num_of_pages,PAGE_SIZE);
^
Main.java:3: error: class, interface, or enum expected
uint32 min=9999;
^
Main.java:4: error: class, interface, or enum expected
struct Frame_Info* ptr_frame_info;
^
Main.java:5: error: class, interface, or enum expected
int num_of_pages_Kheap = (KERNEL_HEAP_MAX-KERNEL_HEAP_START)/PAGE_SIZE;
^
Main.java:6: error: class, interface, or enum expected
uint32 va=0;
^
Main.java:7: error: class, interface, or enum expected
uint32 *ptr_table = NULL;
^
Main.java:8: error: class, interface, or enum expected
for(int i = KERNEL_HEAP_START ; i < KERNEL_HEAP_MAX ; i+=PAGE_SIZE)
^
Main.java:8: error: class, interface, or enum expected
for(int i = KERNEL_HEAP_START ; i < KERNEL_HEAP_MAX ; i+=PAGE_SIZE)
^
Main.java:8: error: class, interface, or enum expected
for(int i = KERNEL_HEAP_START ; i < KERNEL_HEAP_MAX ; i+=PAGE_SIZE)
^
Main.java:11: error: class, interface, or enum expected
ptr_frame_info = get_frame_info(ptr_page_directory,(void*)i, &ptr_table);
^
Main.java:12: error: class, interface, or enum expected
if (ptr_frame_info == NULL)
^
Main.java:14: error: class, interface, or enum expected
for(int j = i; j < KERNEL_HEAP_MAX;j+=PAGE_SIZE )
^
Main.java:14: error: class, interface, or enum expected
for(int j = i; j < KERNEL_HEAP_MAX;j+=PAGE_SIZE )
^
Main.java:17: error: class, interface, or enum expected
if (ptr_frame_info == NULL)
^
Main.java:20: error: class, interface, or enum expected
}
^
Main.java:26: error: class, interface, or enum expected
va=i;
^
Main.java:27: error: class, interface, or enum expected
break;
^
Main.java:28: error: class, interface, or enum expected
}
^
Main.java:31: error: class, interface, or enum expected
}
^
Main.java:36: error: class, interface, or enum expected
for(int i = 0;i<num_of_pages;i++)
^
Main.java:36: error: class, interface, or enum expected
for(int i = 0;i<num_of_pages;i++)
^
Main.java:36: error: class, interface, or enum expected
for(int i = 0;i<num_of_pages;i++)
^
Main.java:39: error: class, interface, or enum expected
ptr_frame_info = get_frame_info(ptr_page_directory, (void*)va, &ptr_table);
^
Main.java:40: error: class, interface, or enum expected
allocate_frame(&ptr_frame_info) ;
^
Main.java:41: error: class, interface, or enum expected
map_frame(ptr_page_directory, ptr_frame_info, (void*)va, PERM_USER|PERM_WRITEABLE);
^
Main.java:42: error: class, interface, or enum expected
va+=PAGE_SIZE;
^
Main.java:43: error: class, interface, or enum expected
}
^
Main.java:56: error: class, interface, or enum expected
else
^
30 errors