Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
paging.c File Reference
#include "paging.h"
#include "autoconf.h"
#include "init/init.h"
#include <libk/serial.h>
#include <memory/memory_utils.h>
#include <memory/phys_base_allocator.h>
#include <memory/phys_window.h>
#include <memory/vm_manager.h>
#include <spinlock.h>
#include <str.h>
#include <type.h>

Go to the source code of this file.

Data Structures

struct  paging_page
 

Macros

#define EXPORT_SYMBOL(sym)
 

Typedefs

typedef struct paging_page paging_page
 

Functions

void paging_physwindow_mmap (page_t page_dir, uint64_t virt, uint64_t phys, uint64_t flags)
 
struct paging_page __attribute__ ((aligned(32)))
 
page_t paging_create_page_directory ()
 
static void initialize_physical_paging_window (page_t page)
 
 INIT (paging)
 
void paging_debug (page_t pml4_phys, uint64_t virt)
 
void paging_setup (page_t p)
 
void vxMmap (page_t page_dir, uint64_t virt, uint64_t phys, uint64_t flags)
 
void vxMultipleMmap (page_t page_dir, uint64_t virt, uint64_t phys, uint64_t size, uint64_t flags)
 
void paging_unmap_page (page_t page_dir, uint64_t virt)
 
void paging_unmap_fill (page_t page_dir, uint64_t virt, size_t size)
 
void paging_reload (page_t p)
 
page_t paging_get_highest_page_map (void)
 
uint64_t vaddr_to_paddr (page_t p, uint64_t vaddr)
 

Variables

static uintptr_t PHYS_BASE_METADATA_ADDR = 0xffffffe000000000
 
volatile boolean_t paging_has_been_set = 0
 
uint8_tbitmap_base_
 
uint8_tdma_bitmap_base_
 
uint64_t metadata_size
 
size_t dma_bitmap_size
 
uintptr_t page
 
paging_pagenext
 
static spinlock_t paging_lock = {0}
 
static page_t kernel_pml4
 
static page_t physwindow_pt = 0
 

Macro Definition Documentation

◆ EXPORT_SYMBOL

#define EXPORT_SYMBOL ( sym)
Value:
__attribute__((used, visibility("default"))) void* __export_##sym = &sym
boolean_t used
Definition ehci.hpp:6
typedef __attribute__
Definition msi.c:47

Definition at line 15 of file paging.c.

Typedef Documentation

◆ paging_page

typedef struct paging_page paging_page

Definition at line 28 of file paging.c.

Function Documentation

◆ __attribute__()

struct paging_page __attribute__ ( (aligned(32)) )

Definition at line 1 of file framebuffer.h.

◆ INIT()

◆ initialize_physical_paging_window()

static void initialize_physical_paging_window ( page_t page)
static

◆ paging_create_page_directory()

page_t paging_create_page_directory ( )

◆ paging_debug()

void paging_debug ( page_t pml4_phys,
uint64_t virt )

◆ paging_get_highest_page_map()

◆ paging_physwindow_mmap()

void paging_physwindow_mmap ( page_t page_dir,
uint64_t virt,
uint64_t phys,
uint64_t flags )

Definition at line 54 of file paging.c.

References flags, PAGE_PHYS_MASK, physwindow_pt, and VMM_PAGE.

Referenced by initialize_physical_paging_window().

◆ paging_reload()

◆ paging_setup()

◆ paging_unmap_fill()

void paging_unmap_fill ( page_t page_dir,
uint64_t virt,
size_t size )

Definition at line 451 of file paging.c.

References paging_unmap_page(), and size.

Referenced by acpi_phys_page_unmap().

◆ paging_unmap_page()

◆ vaddr_to_paddr()

uint64_t vaddr_to_paddr ( page_t p,
uint64_t vaddr )

Definition at line 465 of file paging.c.

References PAGE_PHYS_MASK, and PHYS2VIRT.

◆ vxMmap()

◆ vxMultipleMmap()

Variable Documentation

◆ bitmap_base_

uint8_t* bitmap_base_
extern

◆ dma_bitmap_base_

uint8_t* dma_bitmap_base_
extern

Definition at line 19 of file phys_base_allocator.c.

◆ dma_bitmap_size

size_t dma_bitmap_size
extern

Definition at line 20 of file phys_base_allocator.c.

◆ kernel_pml4

page_t kernel_pml4
static

Definition at line 51 of file paging.c.

Referenced by INIT(), paging_get_highest_page_map(), and paging_setup().

◆ metadata_size

uint64_t metadata_size
extern

Definition at line 22 of file phys_base_allocator.c.

Referenced by INIT(), and INIT().

◆ next

paging_page* next

Definition at line 1 of file paging.c.

◆ page

◆ paging_has_been_set

volatile boolean_t paging_has_been_set = 0

Definition at line 18 of file paging.c.

Referenced by INIT(), paging_create_page_directory(), paging_setup(), paging_unmap_page(), and vxMmap().

◆ paging_lock

spinlock_t paging_lock = {0}
static

Definition at line 34 of file paging.c.

Referenced by paging_create_page_directory(), paging_unmap_page(), and vxMmap().

◆ PHYS_BASE_METADATA_ADDR

uintptr_t PHYS_BASE_METADATA_ADDR = 0xffffffe000000000
static

Definition at line 13 of file paging.c.

Referenced by INIT().

◆ physwindow_pt

page_t physwindow_pt = 0
static

Definition at line 52 of file paging.c.

Referenced by initialize_physical_paging_window(), and paging_physwindow_mmap().