fix: invert result of file_compare for shared_file_less

This commit is contained in:
2024-11-30 11:49:19 +00:00
parent dca773addc
commit 6218b5e80d
2 changed files with 2 additions and 15 deletions

View File

@@ -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;
}

View File

@@ -1,7 +1,7 @@
#include "page.h"
#include <string.h>
#include <stdio.h>
#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