osdev/include/page.h

37 lines
1.0 KiB
C

#ifndef __PAGE_H__
#define __PAGE_H__
#include <types.h>
typedef struct page {
u32int present : 1; // strona jest obecna w pamięci
u32int rw : 1; // odczyt / zapis jeśli 1, inaczej tylko odczyt
u32int user : 1; // user-space jeśli 1, inaczej kernel-space
u32int accessed : 1; // flaga ustawiana przez cpu - czy była użytkowana
u32int dirty : 1; // flaga ustawiana przez cpu - czy była zapisywana
u32int unused : 7; // nieużywane
u32int frame : 20; // adres framki (przesuniętego o 12 bitów)
} page_t;
typedef struct page_table {
page_t pages[1024];
} page_table_t;
typedef struct page_directory {
/**
* Tablica wskaźników do tablic stron.
*/
page_table_t *table[1024];
/**
* Tablica wskaźników do tablic stron, ale fizycznych lokalizacji
* w celu załadowania ich do rejestru CR3.
*/
u32int tablesPhysical[1024];
/**
* Fizyczny adres tabliy tablesPhysical.
*/
u32int physicalAddr;
} page_directory_t;
#endif