struct vm_area_struct { | |
struct mm_struct | *vm_mm; |
unsigned long | vm_start; |
unsigned long | vm_end; |
struct vm_area_struct | *vm_next; |
pgprot_t | vm_page_prot; |
unsigned long | vm_flags; |
short | vm_avl_height; |
struct vm_area_struct | *vm_avl_left; |
struct vm_area_struct | *vm_avl_right; |
struct vm_area_struct | *vm_next_share; |
struct vm_area_struct | **vm_pprev_share; |
struct vm_operations_struct | *vm_ops; |
unsigned long | vm_pgoff; |
struct file | *vm_file; |
unsigned long | vm_raend; |
void | *vm_private_data; |
}; |
Znaczenie pól:
*vm_mm | wskaźnik (zwrotny) do struktury mm_struct procesu będącego właścicielem VMA. |
vm_start | adres początku wirtualnego obszaru pamięci, reprezentowanego przez ten vm_area_struct. |
vm_end | adres końca wirtualnego obszaru pamięci. |
*vm_next | pole organizujące struktury vm_area_struct procesu w listę posortowaną ze względu na pole vm_start. |
vm_page_prot | znaczniki ochrony dostępu do VMA. Fladze tej można przypisać takie same wartości jak fladze do ochrony pojedynczej strony pamięci. |
vm_flags | różne flagi opisujące typ VMA. Flagi te są opisane poniżej. |
vm_avl_height | pole wysokości dla AVL'a. |
*vm_avl_left | lewy potomek AVL'a. |
*vm_avl_right | prawy potomek AVL'a. |
*vm_next_share | wraz z polem vm_pprev_share organizują w listę cykliczną struktury vm_area_struct, które są przydzielone do jakiejś przestrzeni adresowej20 (ang. address space) lub w listę odwzorowań dla obszarów pamięci dzielonej IPC lub są nieużywane. |
**vm_pprev_share | patrz wyżej. |
*vm_ops | wskaźnik na strukturę vm_operations_struct. Patrz opis dwa punkty dalej. |
vm_pgoff | gdy VMA mapuje plik to vm_pgoff zawiera offset w tym pliku podany w jednostkach rozmiaru strony PAGE_SIZE. |
*vm_file | wskaźnik na plik mapowany w tym VMA, może to być NULL. |
vm_raend | gdy plik mapowany w tym VMA jest czytany z wyprzedzeniem, to zmienna ta pomaga przy obsłudze tej sytuacji, wpp. jest zawsze równa 0. |
*vm_private_data | zmienna używana w przypadku używania pamięci dzielonej, dawniej nazywała się vm_pte |