Implement VM #63

Merged
td1223 merged 94 commits from vm/merged/themis into master 2024-12-06 05:07:14 +00:00
146 changed files with 15478 additions and 195 deletions
Showing only changes of commit 941e1e067a - Show all commits

View File

@@ -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:

View File

@@ -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. */

View File

@@ -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)
{
}

View File

@@ -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)
{
}

View File

@@ -5,7 +5,7 @@
#include "filesys/off_t.h"
enum page_type {
PAGE_EXECUTABLE,
PAGE_FILE,
PAGE_EMPTY
};