GitOS
Operating system exercise
Loading...
Searching...
No Matches
paging.h
Go to the documentation of this file.
1#pragma once
2#include <stdint.h>
3
4#define PAGING_CACHE_DISABLED 0b00010000
5#define PAGING_WRITE_THROUGH 0b00001000
6#define PAGING_ACCESS_FROM_ALL 0b00000100
7#define PAGING_IS_WRITEABLE 0b00000010
8#define PAGING_IS_PRESENT 0b00000001
9
10#define PAGING_TOTAL_ENTRIES_PER_TABLE 1024
11#define PAGING_PAGE_SIZE 4096
12
14{
15 uint32_t* directory_entry;
16};
17
19void paging_free_directory(struct paging_chunk* chunk);
20
21void paging_switch(struct paging_chunk* chunk);
23uint32_t* paging_get_directory(struct paging_chunk* chunk);
24int paging_map_to(struct paging_chunk* chunk, void* virtual_address, void* physical_address, void* physical_end, int flags);
25void* paging_align_address(void* ptr);
27
28int paging_set_page(uint32_t* directory, void* virtual_address, uint32_t value);
29uint32_t paging_get_page(uint32_t* directory, void* virtual_address);
uint32_t flags
Definition idt.h:11
int paging_set_page(uint32_t *directory, void *virtual_address, uint32_t value)
Sets page table entry.
Definition paging.c:122
void * paging_align_address_to_lower_page(void *ptr)
Definition paging.c:173
void paging_switch(struct paging_chunk *chunk)
Switches to given page directory pointer.
Definition paging.c:108
struct paging_chunk * paging_new_directory(uint8_t flags)
Allocates and creates new page directory with specified flags.
Definition paging.c:66
uint32_t paging_get_page(uint32_t *directory, void *virtual_address)
Definition paging.c:141
void * paging_align_address(void *ptr)
Aligns pointer to page size.
Definition paging.c:164
int paging_map_to(struct paging_chunk *chunk, void *virtual_address, void *physical_address, void *physical_end, int flags)
Maps virtual address to physical in page directory.
Definition paging.c:227
void paging_enable()
uint32_t * paging_get_directory(struct paging_chunk *chunk)
Returns directory entry pointer for given chunk.
Definition paging.c:55
void paging_free_directory(struct paging_chunk *chunk)
Frees all entries and page directory itself.
Definition paging.c:91
Definition paging.h:14
uint32_t * directory_entry
Definition paging.h:15