Kintsugi OS 0.2.0
x86 Monolithic OS
Loading...
Searching...
No Matches
paging.h File Reference
#include "../cpu/isr.h"
#include "ctypes.h"

Go to the source code of this file.

Classes

struct  page
 
struct  page_table
 
struct  page_directory
 

Macros

#define INDEX_FROM_BIT(a)   (a / (8 * 4))
 
#define OFFSET_FROM_BIT(a)   (a % (8 * 4))
 
#define PAGE_SIZE   0x1000
 

Typedefs

typedef struct page page_t
 
typedef struct page_table page_table_t
 
typedef struct page_directory page_directory_t
 

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)
 Обычное выделение памяти
 
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.
 
void page_fault (registers_t regs)
 Обработчик Page Fault.
 
void alloc_frame (page_t *page, int is_kernel, int is_writeable)
 Аллокация фрейма
 
void free_frame (page_t *page)
 Освобождение фрейма
 
u32 test_frame (u32 frame_addr)
 Тест фрейма
 

Variables

u32 nframes
 
u32 free_mem_addr
 
page_directory_tkernel_directory
 
page_directory_tcurrent_directory
 

Macro Definition Documentation

◆ INDEX_FROM_BIT

#define INDEX_FROM_BIT (   a)    (a / (8 * 4))

◆ OFFSET_FROM_BIT

#define OFFSET_FROM_BIT (   a)    (a % (8 * 4))

◆ PAGE_SIZE

#define PAGE_SIZE   0x1000

Typedef Documentation

◆ page_directory_t

◆ page_t

typedef struct page page_t

◆ page_table_t

typedef struct page_table page_table_t

Function Documentation

◆ alloc_frame()

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

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

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

◆ 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

◆ 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
extern

◆ free_mem_addr

u32 free_mem_addr
extern

◆ kernel_directory

page_directory_t* kernel_directory
extern

◆ nframes

u32 nframes
extern