|
GitOS
|
#include "paging.h"#include <stdbool.h>#include <stdint.h>#include "common/status.h"#include "memory/heap/kheap.h"Functions | |
| uint32_t * | paging_get_directory (struct paging_chunk *chunk) |
| Returns directory entry pointer for given chunk. | |
| struct paging_chunk * | paging_new_directory (uint8_t flags) |
| Allocates and creates new page directory with specified flags. | |
| void | paging_free_directory (struct paging_chunk *chunk) |
| Frees all entries and page directory itself. | |
| void | paging_switch (struct paging_chunk *chunk) |
| Switches to given page directory pointer. | |
| int | paging_set_page (uint32_t *directory, void *virtual_address, uint32_t value) |
| Sets page table entry. | |
| uint32_t | paging_get_page (uint32_t *directory, void *virtual_address) |
| void * | paging_align_address (void *ptr) |
| Aligns pointer to page size. | |
| void * | paging_align_address_to_lower_page (void *ptr) |
| int | paging_map (struct paging_chunk *chunk, void *virtual, void *physical, int flags) |
| Maps virtual address to physical in page directory. | |
| int | paging_map_range (struct paging_chunk *directory, void *virtual, void *physical, int count, int flags) |
| Maps range of virtual addresses to physical in page directory. | |
| 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. | |
| void * paging_align_address | ( | void * | ptr | ) |
| void * paging_align_address_to_lower_page | ( | void * | ptr | ) |
References PAGING_PAGE_SIZE.
| void paging_free_directory | ( | struct paging_chunk * | chunk | ) |
Frees all entries and page directory itself.
| chunk | Page directory to free |
References paging_chunk::directory_entry, and kfree().
| uint32_t * paging_get_directory | ( | struct paging_chunk * | chunk | ) |
Returns directory entry pointer for given chunk.
| chunk | Chunk |
References paging_chunk::directory_entry.
| uint32_t paging_get_page | ( | uint32_t * | directory, |
| void * | virtual_address ) |
References EINVARG.
| int paging_map | ( | struct paging_chunk * | chunk, |
| void * | virtual, | ||
| void * | physical, | ||
| int | flags ) |
Maps virtual address to physical in page directory.
| chunk | Paging chunk |
| physical | Physical address |
| flags | Page directory entry flags |
References paging_chunk::directory_entry, EINVARG, flags, PAGING_PAGE_SIZE, and paging_set_page().
| int paging_map_range | ( | struct paging_chunk * | directory, |
| void * | virtual, | ||
| void * | physical, | ||
| int | count, | ||
| int | flags ) |
Maps range of virtual addresses to physical in page directory.
| directory | Page directory |
| physical | Physical address |
| flags | Page directory entry flags |
| count | Count of entries |
References flags, paging_map(), and PAGING_PAGE_SIZE.
| 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.
| chunk | Paging chunk |
| physical_address | Physical address start |
| physical_end | Physical address end |
| flags | Page directory entry flags |
References EINVARG, flags, paging_map_range(), and PAGING_PAGE_SIZE.
| struct paging_chunk * paging_new_directory | ( | uint8_t | flags | ) |
Allocates and creates new page directory with specified flags.
| flags | Flags for each page table |
References paging_chunk::directory_entry, flags, kzalloc(), offset, PAGING_IS_WRITEABLE, PAGING_PAGE_SIZE, and PAGING_TOTAL_ENTRIES_PER_TABLE.
| int paging_set_page | ( | uint32_t * | directory, |
| void * | virtual_address, | ||
| uint32_t | value ) |
Sets page table entry.
| directory | Page directory pointer |
| virtual_address | Virtual address |
| value | Value for page table entry |
References EINVARG.
| void paging_switch | ( | struct paging_chunk * | chunk | ) |
Switches to given page directory pointer.
| chunk | Page directory pointer |
References paging_chunk::directory_entry.