[Krafton Jungle] PintOS 2.0.0
크래프톤 정글 PintOS
 
Loading...
Searching...
No Matches
mmu.h
Go to the documentation of this file.
1#ifndef THREAD_MMU_H
2#define THREAD_MMU_H
3
4#include <stdbool.h>
5#include <stdint.h>
6#include "threads/pte.h"
7
8typedef bool pte_for_each_func (uint64_t *pte, void *va, void *aux);
9
10uint64_t *pml4e_walk (uint64_t *pml4, const uint64_t va, int create);
11uint64_t *pml4_create (void);
12bool pml4_for_each (uint64_t *, pte_for_each_func *, void *);
13void pml4_destroy (uint64_t *pml4);
14void pml4_activate (uint64_t *pml4);
15void *pml4_get_page (uint64_t *pml4, const void *upage);
16bool pml4_set_page (uint64_t *pml4, void *upage, void *kpage, bool rw);
17void pml4_clear_page (uint64_t *pml4, void *upage);
18bool pml4_is_dirty (uint64_t *pml4, const void *upage);
19void pml4_set_dirty (uint64_t *pml4, const void *upage, bool dirty);
20bool pml4_is_accessed (uint64_t *pml4, const void *upage);
21void pml4_set_accessed (uint64_t *pml4, const void *upage, bool accessed);
22
23#define is_writable(pte) (*(pte) & PTE_W)
24#define is_user_pte(pte) (*(pte) & PTE_U)
25#define is_kern_pte(pte) (!is_user_pte (pte))
26
27#define pte_get_paddr(pte) (pg_round_down(*(pte)))
28
29/* Segment descriptors for x86-64. */
30struct desc_ptr {
33} __attribute__((packed));
34
35#endif /* thread/mm.h */
bool create(const char *file, unsigned initial_size)
파일을 생성하는 시스템 콜
Definition: syscall.c:233
bool pml4_is_dirty(uint64_t *pml4, const void *upage)
Definition: mmu.c:277
void pml4_clear_page(uint64_t *pml4, void *upage)
Definition: mmu.c:258
void pml4_set_dirty(uint64_t *pml4, const void *upage, bool dirty)
Definition: mmu.c:285
uint64_t * pml4_create(void)
Definition: mmu.c:96
bool pml4_set_page(uint64_t *pml4, void *upage, void *kpage, bool rw)
Definition: mmu.c:240
struct desc_ptr __attribute__((packed))
void * pml4_get_page(uint64_t *pml4, const void *upage)
Definition: mmu.c:214
bool pml4_for_each(uint64_t *, pte_for_each_func *, void *)
Definition: mmu.c:148
bool pte_for_each_func(uint64_t *pte, void *va, void *aux)
Definition: mmu.h:8
void pml4_destroy(uint64_t *pml4)
Definition: mmu.c:190
void pml4_activate(uint64_t *pml4)
Definition: mmu.c:205
uint64_t * pml4e_walk(uint64_t *pml4, const uint64_t va, int create)
Definition: mmu.c:65
void pml4_set_accessed(uint64_t *pml4, const void *upage, bool accessed)
Definition: mmu.c:311
bool pml4_is_accessed(uint64_t *pml4, const void *upage)
Definition: mmu.c:303
unsigned long long int uint64_t
Definition: stdint.h:29
unsigned short int uint16_t
Definition: stdint.h:23
Definition: mmu.h:30
uint16_t size
Definition: mmu.h:31
uint64_t address
Definition: mmu.h:32