From 6218b5e80df8b4476cccb3dcf33a5f5e888832ff Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Sat, 30 Nov 2024 11:49:19 +0000 Subject: [PATCH] fix: invert result of file_compare for shared_file_less --- src/userprog/exception.c | 5 ----- src/vm/page.c | 12 ++---------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/userprog/exception.c b/src/userprog/exception.c index 4cb52af..3b7785c 100644 --- a/src/userprog/exception.c +++ b/src/userprog/exception.c @@ -176,17 +176,13 @@ try_fetch_page (void *upage, bool write) /* Check if the page is in the supplemental page table. That is, it is a page that is expected to be in memory. */ struct page_entry *page = page_get (upage); - printf ("Hiiii 1!\n"); if (page == NULL) return false; - printf ("Hiiii 2!\n"); /* An attempt to write to a non-writeable should fail. */ if (write && !page->writable) return false; - printf ("FUCK PINTOS!\n"); - /* Load the page into memory based on the type of data it is expecting. */ bool success = false; switch (page->type) { @@ -194,7 +190,6 @@ try_fetch_page (void *upage, bool write) success = page_load (page, write); break; default: - printf ("what the heck\n"); return false; } diff --git a/src/vm/page.c b/src/vm/page.c index f3f1478..16a9d8e 100644 --- a/src/vm/page.c +++ b/src/vm/page.c @@ -1,7 +1,7 @@ #include "page.h" #include -#include #include "filesys/file.h" +#include "filesys/filesys.h" #include "threads/malloc.h" #include "threads/palloc.h" #include "threads/vaddr.h" @@ -77,22 +77,18 @@ page_get (void *upage) bool page_load (struct page_entry *page, bool writable) { - printf ("WE IN PAGE LOAD NOW %p %d\n", page->file, page->offset); /* If the page is read-only, we want to check if it is a shared page already loaded into memory. If it is, we can just map the page to the frame. */ if (!page->writable && !writable) { - printf ("Hi 0! %d %d\n", page->offset, file_length (page->file)); struct shared_page_entry *shared_page = shared_page_get (page->file, page->upage); if (shared_page != NULL) { - printf ("Hi 0.1!\n"); /* Map the page to the shared frame for this read-only portion. */ if (!install_page (page->upage, shared_page->frame, false)) return false; - printf ("Hi 0.2!\n"); return true; } } @@ -108,11 +104,9 @@ page_load (struct page_entry *page, bool writable) if (!install_page (page->upage, frame, page->writable)) { frame_free (frame); - printf ("Hi 2!\n"); return false; } - printf ("UR MAMA SO FAT"); /* Move the file pointer to the correct location in the file. Then, read the data from the file into the frame. Checks that we were able to read the expected number of bytes. */ @@ -120,7 +114,6 @@ page_load (struct page_entry *page, bool writable) if (file_read (page->file, frame, page->read_bytes) != (int) page->read_bytes) { frame_free (frame); - printf ("Hi 3!\n"); return false; } @@ -133,7 +126,6 @@ page_load (struct page_entry *page, bool writable) if (shared_page_insert (page->file, page->upage, frame) == NULL) { frame_free (frame); - printf ("Hi 4!\n"); return false; } } @@ -168,7 +160,7 @@ shared_file_less (const struct hash_elem *a_, const struct hash_elem *b_, const struct shared_file_entry *b = hash_entry (b_, struct shared_file_entry, elem); - return file_compare (a->file, b->file); + return !file_compare (a->file, b->file); } /* Hashing function needed for the shared pages table. Returns a hash for an