//kernel/trunk/genarch/include/mm/page_ht.h |
---|
51,7 → 51,11 |
as_t *as; /**< Address space. */ |
__address page; /**< Virtual memory page. */ |
__address frame; /**< Physical memory frame. */ |
int flags; |
unsigned g : 1; /**< Global page. */ |
unsigned x : 1; /**< Execute. */ |
unsigned w : 1; /**< Writable. */ |
unsigned k : 1; /**< Kernel privileges required. */ |
unsigned c : 1; /**< Cacheable. */ |
unsigned a : 1; /**< Accessed. */ |
unsigned d : 1; /**< Dirty. */ |
unsigned p : 1; /**< Present. */ |
//kernel/trunk/genarch/src/mm/page_ht.c |
---|
171,7 → 171,18 |
if (!hash_table_find(&page_ht, key)) { |
t = (pte_t *) malloc(sizeof(pte_t), FRAME_ATOMIC); |
ASSERT(t != NULL); |
t->g = (flags & PAGE_GLOBAL) != 0; |
t->x = (flags & PAGE_EXEC) != 0; |
t->w = (flags & PAGE_WRITE) != 0; |
t->k = !(flags & PAGE_USER); |
t->c = (flags & PAGE_CACHEABLE) != 0; |
t->p = !(flags & PAGE_NOT_PRESENT); |
t->as = as; |
t->page = page; |
t->frame = frame; |
hash_table_insert(&page_ht, key, &t->link); |
} |