#include "userprog/pagedir.h"
#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include "threads/init.h"
#include "threads/pte.h"
#include "threads/palloc.h"
Go to the source code of this file.
Functions | |
static uint32_t * | active_pd (void) |
static void | invalidate_pagedir (uint32_t *) |
uint32_t * | pagedir_create (void) |
void | pagedir_destroy (uint32_t *pd) |
static uint32_t * | lookup_page (uint32_t *pd, const void *vaddr, bool create) |
bool | pagedir_set_page (uint32_t *pd, void *upage, void *kpage, bool writable) |
void * | pagedir_get_page (uint32_t *pd, const void *uaddr) |
void | pagedir_clear_page (uint32_t *pd, void *upage) |
bool | pagedir_is_dirty (uint32_t *pd, const void *vpage) |
void | pagedir_set_dirty (uint32_t *pd, const void *vpage, bool dirty) |
bool | pagedir_is_accessed (uint32_t *pd, const void *vpage) |
void | pagedir_set_accessed (uint32_t *pd, const void *vpage, bool accessed) |
void | pagedir_activate (uint32_t *pd) |
static uint32_t * active_pd | ( | void | ) | [static] |
static void invalidate_pagedir | ( | uint32_t * | pd | ) | [static] |
Definition at line 256 of file pagedir.c.
References active_pd(), and pagedir_activate().
Referenced by pagedir_clear_page(), pagedir_set_accessed(), and pagedir_set_dirty().
Definition at line 58 of file pagedir.c.
References ASSERT, is_user_vaddr(), NULL, PAL_ZERO, palloc_get_page(), pd_no(), pde_create_user(), pde_get_pt(), and pt_no().
Referenced by pagedir_clear_page(), pagedir_get_page(), pagedir_is_accessed(), pagedir_is_dirty(), pagedir_set_accessed(), pagedir_set_dirty(), and pagedir_set_page().
void pagedir_activate | ( | uint32_t * | pd | ) |
Definition at line 221 of file pagedir.c.
References base_page_dir, NULL, and vtop().
Referenced by invalidate_pagedir(), process_activate(), and process_exit().
void pagedir_clear_page | ( | uint32_t * | pd, | |
void * | upage | |||
) |
Definition at line 145 of file pagedir.c.
References ASSERT, invalidate_pagedir(), is_user_vaddr(), lookup_page(), NULL, pg_ofs(), and PTE_P.
uint32_t* pagedir_create | ( | void | ) |
Definition at line 18 of file pagedir.c.
References base_page_dir, memcpy(), NULL, palloc_get_page(), and PGSIZE.
Referenced by load().
void pagedir_destroy | ( | uint32_t * | pd | ) |
Definition at line 29 of file pagedir.c.
References ASSERT, base_page_dir, NULL, palloc_free_page(), pd_no(), pde_get_pt(), PGSIZE, PHYS_BASE, pte_get_page(), and PTE_P.
Referenced by process_exit().
void* pagedir_get_page | ( | uint32_t * | pd, | |
const void * | uaddr | |||
) |
Definition at line 127 of file pagedir.c.
References ASSERT, is_user_vaddr(), lookup_page(), NULL, pg_ofs(), pte_get_page(), and PTE_P.
Referenced by install_page().
bool pagedir_is_accessed | ( | uint32_t * | pd, | |
const void * | vpage | |||
) |
bool pagedir_is_dirty | ( | uint32_t * | pd, | |
const void * | vpage | |||
) |
void pagedir_set_accessed | ( | uint32_t * | pd, | |
const void * | vpage, | |||
bool | accessed | |||
) |
Definition at line 203 of file pagedir.c.
References invalidate_pagedir(), lookup_page(), NULL, and PTE_A.
void pagedir_set_dirty | ( | uint32_t * | pd, | |
const void * | vpage, | |||
bool | dirty | |||
) |
Definition at line 174 of file pagedir.c.
References invalidate_pagedir(), lookup_page(), NULL, and PTE_D.
bool pagedir_set_page | ( | uint32_t * | pd, | |
void * | upage, | |||
void * | kpage, | |||
bool | writable | |||
) |
Definition at line 100 of file pagedir.c.
References ASSERT, base_page_dir, is_user_vaddr(), lookup_page(), NULL, pg_ofs(), pte_create_user(), PTE_P, PTSHIFT, ram_pages, and vtop().
Referenced by install_page().