pintos/src/userprog/pagedir.c File Reference

#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_tactive_pd (void)
static void invalidate_pagedir (uint32_t *)
uint32_tpagedir_create (void)
void pagedir_destroy (uint32_t *pd)
static uint32_tlookup_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)


Function Documentation

static uint32_t * active_pd ( void   )  [static]

Definition at line 236 of file pagedir.c.

References ptov().

Referenced by invalidate_pagedir().

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().

static uint32_t* lookup_page ( uint32_t pd,
const void *  vaddr,
bool  create 
) [static]

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 
)

Definition at line 194 of file pagedir.c.

References lookup_page(), NULL, and PTE_A.

bool pagedir_is_dirty ( uint32_t pd,
const void *  vpage 
)

Definition at line 165 of file pagedir.c.

References lookup_page(), NULL, and PTE_D.

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 
)


Generated on Mon Jan 10 16:43:58 2011 for Pintos by  doxygen 1.5.6