43#define VM_TYPE(type) ((type) & 7)
106#define swap_in(page, v) (page)->operations->swap_in ((page), v)
107#define swap_out(page) (page)->operations->swap_out (page)
108#define destroy(page) \
109 if ((page)->operations->destroy) (page)->operations->destroy (page)
133 bool write,
bool not_present);
135#define vm_alloc_page(type, upage, writable) \
136 vm_alloc_page_with_initializer ((type), (upage), (writable), NULL, NULL)
int write(int fd, const void *buffer, unsigned length)
열린 파일에 데이터를 쓰는 시스템 콜
Definition: syscall.c:336
#define bool
Definition: stdbool.h:4
struct list_elem frame_elem
Definition: vm.h:81
struct page * page
Definition: vm.h:79
void * kva
Definition: vm.h:78
Definition: interrupt.h:37
Definition: page_cache.h:8
enum vm_type type
Definition: vm.h:103
bool(* swap_in)(struct page *, void *)
Definition: vm.h:100
void(* destroy)(struct page *)
Definition: vm.h:102
bool(* swap_out)(struct page *)
Definition: vm.h:101
const struct page_operations * operations
Definition: vm.h:52
bool writable
Definition: vm.h:60
void * va
Definition: vm.h:53
struct frame * frame
Definition: vm.h:54
struct uninit_page uninit
Definition: vm.h:67
struct anon_page anon
Definition: vm.h:68
struct hash spt_hash
Definition: vm.h:117
bool vm_initializer(struct page *, void *aux)
Definition: uninit.h:8
static void init(void)
Definition: vga.c:36
bool supplemental_page_table_copy(struct supplemental_page_table *dst, struct supplemental_page_table *src)
bool vm_try_handle_fault(struct intr_frame *f, void *addr, bool user, bool write, bool not_present)
struct page * spt_find_page(struct supplemental_page_table *spt, void *va)
void vm_init(void)
Definition: vm.c:25
bool vm_alloc_page_with_initializer(enum vm_type type, void *upage, bool writable, vm_initializer *init, void *aux)
Definition: vm.c:74
bool vm_claim_page(void *va)
vm_type
Definition: vm.h:8
@ VM_UNINIT
Definition: vm.h:11
@ VM_MARKER_0
Definition: vm.h:26
@ VM_MARKER_END
Definition: vm.h:30
@ VM_PAGE_CACHE
Definition: vm.h:20
@ VM_FILE
Definition: vm.h:17
@ VM_ANON
Definition: vm.h:14
@ VM_MARKER_1
Definition: vm.h:27
void supplemental_page_table_init(struct supplemental_page_table *spt)
enum vm_type page_get_type(struct page *page)
Definition: vm.c:43
void spt_remove_page(struct supplemental_page_table *spt, struct page *page)
Definition: vm.c:163
void vm_dealloc_page(struct page *page)
Definition: vm.c:309
bool spt_insert_page(struct supplemental_page_table *spt, struct page *page)
void supplemental_page_table_kill(struct supplemental_page_table *spt)