Kintsugi OS 0.2.0
x86 Monolithic OS
|
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_t * | get_page (u32 address, int make, page_directory_t *dir) |
Get the page object. | |
Variables | |
u32 * | frames |
u32 | nframes |
page_directory_t * | kernel_directory = 0 |
page_directory_t * | current_directory = 0 |
u32 | free_mem_addr |
void alloc_frame | ( | page_t * | page, |
int | is_kernel, | ||
int | is_writeable | ||
) |
Аллокация фрейма
page | страница в памяти |
is_kernel | это ядро |
is_writeable | этот участок возможен для записи |
|
static |
|
static |
void free_frame | ( | page_t * | page | ) |
Освобождение фрейма
page | страница в памяти |
page_t * get_page | ( | u32 | address, |
int | make, | ||
page_directory_t * | dir | ||
) |
Get the page object.
Получение указателя на требуемую страницу. Если make == 1, создает таблицу страниц если она не создана
address | |
make | |
dir |
void initialise_paging | ( | ) |
Настройка окружения, директорий страниц и включение paging.
void page_fault | ( | registers_t | regs | ) |
Обработчик Page Fault.
regs | регистры |
Выделение с выравниванием и возвратом физического адреса
sz | размер |
phys | физический адрес |
Внутренняя функция выделения памяти
sz | размер |
align | выравнивание |
phys | физический адрес |
Выделение с возвратом физического адреса
sz | размер |
phys | физический размер |
|
static |
void switch_page_directory | ( | page_directory_t * | dir | ) |
Загрузка указанной директории страниц в регистр CR3.
dir | директория страницы в памяти |
page_directory_t* current_directory = 0 |
u32* frames |
|
extern |
page_directory_t* kernel_directory = 0 |
u32 nframes |