Kintsugi OS 0.2.0
x86 Monolithic OS
Loading...
Searching...
No Matches
paging.c File Reference
#include "paging.h"
#include "stdio.h"
#include "stdlib.h"

Functions

u32 pkmalloc_internal (u32 sz, int align, u32 *phys)
 Внутренняя функция выделения памяти
 
u32 pkmalloc_a (u32 sz)
 Выделение с выравниванием по странице
 
u32 pkmalloc_p (u32 sz, u32 *phys)
 Выделение с возвратом физического адреса
 
u32 pkmalloc_ap (u32 sz, u32 *phys)
 Выделение с выравниванием и возвратом физического адреса
 
u32 pkmalloc (u32 sz)
 Обычное выделение памяти
 
static void set_frame (u32 frame_addr)
 
static void clear_frame (u32 frame_addr)
 
u32 test_frame (u32 frame_addr)
 Тест фрейма
 
static u32 first_frame ()
 
void alloc_frame (page_t *page, int is_kernel, int is_writeable)
 Аллокация фрейма
 
void free_frame (page_t *page)
 Освобождение фрейма
 
void page_fault (registers_t regs)
 Обработчик Page Fault.
 
void initialise_paging ()
 Настройка окружения, директорий страниц и включение paging.
 
void switch_page_directory (page_directory_t *dir)
 Загрузка указанной директории страниц в регистр CR3.
 
page_tget_page (u32 address, int make, page_directory_t *dir)
 Get the page object.
 

Variables

u32frames
 
u32 nframes
 
page_directory_tkernel_directory = 0
 
page_directory_tcurrent_directory = 0
 
u32 free_mem_addr
 

Function Documentation

◆ alloc_frame()

void alloc_frame ( page_t page,
int  is_kernel,
int  is_writeable 
)

Аллокация фрейма

Parameters
pageстраница в памяти
is_kernelэто ядро
is_writeableэтот участок возможен для записи

◆ clear_frame()

static void clear_frame ( u32  frame_addr)
static

◆ first_frame()

static u32 first_frame ( )
static

◆ free_frame()

void free_frame ( page_t page)

Освобождение фрейма

Parameters
pageстраница в памяти

◆ get_page()

page_t * get_page ( u32  address,
int  make,
page_directory_t dir 
)

Get the page object.

Получение указателя на требуемую страницу. Если make == 1, создает таблицу страниц если она не создана

Parameters
address
make
dir
Returns
page_t*

◆ initialise_paging()

void initialise_paging ( )

Настройка окружения, директорий страниц и включение paging.

◆ page_fault()

void page_fault ( registers_t  regs)

Обработчик Page Fault.

Parameters
regsрегистры

◆ pkmalloc()

u32 pkmalloc ( u32  sz)

Обычное выделение памяти

Parameters
szразмер
Returns
u32

◆ pkmalloc_a()

u32 pkmalloc_a ( u32  sz)

Выделение с выравниванием по странице

Parameters
szразмер
Returns
u32

◆ pkmalloc_ap()

u32 pkmalloc_ap ( u32  sz,
u32 phys 
)

Выделение с выравниванием и возвратом физического адреса

Parameters
szразмер
physфизический адрес
Returns
u32

◆ pkmalloc_internal()

u32 pkmalloc_internal ( u32  sz,
int  align,
u32 phys 
)

Внутренняя функция выделения памяти

Parameters
szразмер
alignвыравнивание
physфизический адрес
Returns
u32

◆ pkmalloc_p()

u32 pkmalloc_p ( u32  sz,
u32 phys 
)

Выделение с возвратом физического адреса

Parameters
szразмер
physфизический размер
Returns
u32

◆ set_frame()

static void set_frame ( u32  frame_addr)
static

◆ switch_page_directory()

void switch_page_directory ( page_directory_t dir)

Загрузка указанной директории страниц в регистр CR3.

Parameters
dirдиректория страницы в памяти

◆ test_frame()

u32 test_frame ( u32  frame_addr)

Тест фрейма

Parameters
frame_addrадрес фрейма
Returns
u32

Variable Documentation

◆ current_directory

page_directory_t* current_directory = 0

◆ frames

u32* frames

◆ free_mem_addr

u32 free_mem_addr
extern

◆ kernel_directory

page_directory_t* kernel_directory = 0

◆ nframes

u32 nframes