Changes in kernel/generic/include/mm/as.h [ca21f1e2:2fc3b2d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/as.h
rca21f1e2 r2fc3b2d 45 45 #include <synch/mutex.h> 46 46 #include <adt/list.h> 47 #include <adt/btree.h>48 47 #include <adt/odict.h> 49 48 #include <lib/elf.h> … … 137 136 } as_operations_t; 138 137 138 /** Single anonymous page mapping. */ 139 typedef struct { 140 /** Containing pagemap structure */ 141 struct as_pagemap *pagemap; 142 /** Link to @c shinfo->pagemap ordered dictionary */ 143 odlink_t lpagemap; 144 /** Virtual address */ 145 uintptr_t vaddr; 146 /** Physical frame address */ 147 uintptr_t frame; 148 } as_page_mapping_t; 149 150 /** Map of anonymous pages in a shared area. */ 151 typedef struct as_pagemap { 152 /** 153 * Dictionary ordered by virtual address. Members are of type 154 * as_page_mapping_t 155 */ 156 odict_t map; 157 } as_pagemap_t; 158 159 /** Used space interval */ 160 typedef struct { 161 /** Containing used_space structure */ 162 struct used_space *used_space; 163 /** Link to @c used_space->ivals */ 164 odlink_t lused_space; 165 /** First page address */ 166 uintptr_t page; 167 /** Count of pages */ 168 size_t count; 169 } used_space_ival_t; 170 171 /** Map of used space in an address space area */ 172 typedef struct used_space { 173 /** 174 * Dictionary of intervals by start address. 175 * Members are of type @c used_space_ival_t. 176 */ 177 odict_t ivals; 178 /** Total number of used pages. */ 179 size_t pages; 180 } used_space_t; 181 139 182 /** 140 183 * This structure contains information associated with the shared address space … … 150 193 bool shared; 151 194 152 /** 153 * B+tree containing complete map of anonymous pages of the shared area. 154 */ 155 btree_t pagemap; 195 /** Complete map of anonymous pages of the shared area. */ 196 as_pagemap_t pagemap; 156 197 157 198 /** Address space area backend. */ … … 221 262 size_t pages; 222 263 223 /** Number of resident pages in the area. */224 size_t resident;225 226 264 /** Base address of this area. */ 227 265 uintptr_t base; 228 266 229 267 /** Map of used space. */ 230 btree_t used_space;268 used_space_t used_space; 231 269 232 270 /** … … 283 321 extern as_area_t *as_area_next(as_area_t *); 284 322 323 extern void as_pagemap_initialize(as_pagemap_t *); 324 extern void as_pagemap_finalize(as_pagemap_t *); 325 extern as_page_mapping_t *as_pagemap_first(as_pagemap_t *); 326 extern as_page_mapping_t *as_pagemap_next(as_page_mapping_t *); 327 extern errno_t as_pagemap_find(as_pagemap_t *, uintptr_t, uintptr_t *); 328 extern void as_pagemap_insert(as_pagemap_t *, uintptr_t, uintptr_t); 329 extern void as_pagemap_remove(as_page_mapping_t *); 330 285 331 extern unsigned int as_area_get_flags(as_area_t *); 286 332 extern bool as_area_check_access(as_area_t *, pf_access_t); 287 333 extern size_t as_area_get_size(uintptr_t); 288 extern bool used_space_insert(as_area_t *, uintptr_t, size_t); 289 extern bool used_space_remove(as_area_t *, uintptr_t, size_t); 334 extern used_space_ival_t *used_space_first(used_space_t *); 335 extern used_space_ival_t *used_space_next(used_space_ival_t *); 336 extern used_space_ival_t *used_space_find_gteq(used_space_t *, uintptr_t); 337 extern bool used_space_insert(used_space_t *, uintptr_t, size_t); 290 338 291 339 /* Interface to be implemented by architectures. */
Note:
See TracChangeset
for help on using the changeset viewer.