123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- #pragma once
- #include <common/glib.h>
- #include <common/semaphore.h>
- #include <common/spinlock.h>
- #include <common/atomic.h>
- struct mm_struct;
- struct anon_vma_t;
- typedef uint64_t vm_flags_t;
- typedef struct
- {
- unsigned long pml4t;
- } pml4t_t;
- typedef struct
- {
- unsigned long pdpt;
- } pdpt_t;
- typedef struct
- {
- unsigned long pdt;
- } pdt_t;
- typedef struct
- {
- unsigned long pt;
- } pt_t;
- struct ARDS
- {
- ul BaseAddr;
- ul Length;
- unsigned int type;
-
-
-
- } __attribute__((packed));
- struct memory_desc
- {
- struct ARDS e820[32];
- ul len_e820;
- ul *bmp;
- ul bmp_len;
- ul bits_size;
- struct Page *pages_struct;
- ul count_pages;
- ul pages_struct_len;
- struct Zone *zones_struct;
- ul count_zones;
- ul zones_struct_len;
- ul kernel_code_start, kernel_code_end;
- ul kernel_data_end, rodata_end;
- uint64_t start_brk;
- ul end_of_struct;
- };
- struct Zone
- {
-
- struct Page *pages_group;
- ul count_pages;
-
- ul zone_addr_start;
- ul zone_addr_end;
- ul zone_length;
-
- ul attr;
- struct memory_desc *gmd_struct;
-
- ul count_pages_using;
- ul count_pages_free;
-
- ul total_pages_link;
- };
- struct Page
- {
-
- struct Zone *zone;
-
- ul addr_phys;
-
- ul attr;
-
- ul ref_counts;
-
- ul age;
-
- struct anon_vma_t *anon_vma;
- spinlock_t op_lock;
- };
- struct vm_area_struct
- {
- struct vm_area_struct *vm_prev, *vm_next;
-
- uint64_t vm_start;
- uint64_t vm_end;
- struct mm_struct *vm_mm;
- vm_flags_t vm_flags;
-
-
- struct List anon_vma_list;
- struct anon_vma_t * anon_vma;
- struct vm_operations_t *vm_ops;
- atomic_t ref_count;
- pgoff_t page_offset;
- void *private_data;
- };
- struct mm_struct
- {
- pml4t_t *pgd;
- struct vm_area_struct *vmas;
-
- uint64_t code_addr_start, code_addr_end;
-
- uint64_t data_addr_start, data_addr_end;
-
- uint64_t rodata_addr_start, rodata_addr_end;
-
- uint64_t bss_start, bss_end;
-
- uint64_t brk_start, brk_end;
-
- uint64_t stack_start;
- };
- struct anon_vma_t
- {
-
- semaphore_t sem;
-
-
- atomic_t ref_count;
-
-
- struct List vma_list;
-
- struct Page* page;
- };
|