Implement VM #63
@@ -194,7 +194,7 @@ try_fetch_page (void *upage, bool write)
|
||||
/* Load the page into memory based on the type of data it is expecting. */
|
||||
bool success = false;
|
||||
switch (page->type) {
|
||||
case PAGE_EXECUTABLE:
|
||||
case PAGE_FILE:
|
||||
success = page_load (page, page->writable);
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -706,7 +706,7 @@ load_segment (struct file *file, off_t ofs, uint8_t *upage,
|
||||
|
||||
/* Add the page metadata to the SPT to be lazy loaded later on */
|
||||
if (page_insert (file, ofs, upage, page_read_bytes, page_zero_bytes,
|
||||
writable, PAGE_EXECUTABLE) == NULL)
|
||||
writable, PAGE_FILE) == NULL)
|
||||
return false;
|
||||
|
||||
/* Advance. */
|
||||
|
||||
@@ -444,7 +444,7 @@ syscall_mmap (int fd, void *addr)
|
||||
off_t zero_bytes = PGSIZE - read_bytes;
|
||||
|
||||
if (page_insert (file, ofs, addr + ofs, read_bytes, zero_bytes, true,
|
||||
PAGE_EXECUTABLE) == NULL)
|
||||
PAGE_FILE) == NULL)
|
||||
return MMAP_FAILURE;
|
||||
}
|
||||
|
||||
@@ -457,9 +457,11 @@ syscall_mmap (int fd, void *addr)
|
||||
return mmap->mapping;
|
||||
}
|
||||
|
||||
/* Handles the syscall for unmapping a memory mapped file. */
|
||||
/* Handles the syscall for unmapping a memory mapped file.
|
||||
|
||||
Pre: mapping is a valid mapping identifier returned by mmap syscall.*/
|
||||
static void
|
||||
syscall_munmap (mapid_t mapping UNUSED)
|
||||
syscall_munmap (mapid_t mapping)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -107,21 +107,3 @@ page_cleanup (struct hash_elem *e, void *aux UNUSED)
|
||||
{
|
||||
free (hash_entry (e, struct page_entry, elem));
|
||||
}
|
||||
|
||||
/* Updates the 'owner' thread's page table entry for virtual address 'upage'
|
||||
to have a present bit of 0 and stores the specified swap slot value in the
|
||||
entry for later retrieval from disk. */
|
||||
void
|
||||
page_set_swap (struct thread *owner, void *upage, size_t swap_slot)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* Given that the page with user address 'upage' owned by 'owner' is flagged
|
||||
to be in the swap disk via the owner's page table, returns its stored
|
||||
swap slot. Otherwise panics the kernel. */
|
||||
size_t
|
||||
page_get_swap (struct thread *owner, void *upage)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "filesys/off_t.h"
|
||||
|
||||
enum page_type {
|
||||
PAGE_EXECUTABLE,
|
||||
PAGE_FILE,
|
||||
PAGE_EMPTY
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user