Changes in kernel/generic/src/mm/backend_elf.c [8f80c77:98000fb] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_elf.c
r8f80c77 r98000fb 38 38 #include <lib/elf.h> 39 39 #include <debug.h> 40 #include < typedefs.h>40 #include <arch/types.h> 41 41 #include <mm/as.h> 42 42 #include <mm/frame.h> … … 85 85 size_t i; 86 86 bool dirty = false; 87 88 ASSERT(page_table_locked(AS));89 ASSERT(mutex_locked(&area->lock));90 87 91 88 if (!as_area_check_access(area, access)) … … 235 232 void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame) 236 233 { 234 elf_header_t *elf = area->backend_data.elf; 237 235 elf_segment_header_t *entry = area->backend_data.segment; 238 uintptr_t start_anon;239 240 ASSERT(page_table_locked(area->as)); 241 ASSERT( mutex_locked(&area->lock));242 243 ASSERT(page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE));244 ASSERT(page < entry->p_vaddr + entry->p_memsz);245 236 uintptr_t base, start_anon; 237 size_t i; 238 239 ASSERT((page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) && 240 (page < entry->p_vaddr + entry->p_memsz)); 241 i = (page - ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) >> PAGE_WIDTH; 242 base = (uintptr_t) (((void *) elf) + 243 ALIGN_DOWN(entry->p_offset, FRAME_SIZE)); 246 244 start_anon = entry->p_vaddr + entry->p_filesz; 247 245 … … 259 257 * lower part is backed by the ELF image and the upper is 260 258 * anonymous). In any case, a frame needs to be freed. 261 */ 259 */ 262 260 frame_free(frame); 263 261 } … … 269 267 * Otherwise only portions of the area that are not backed by the ELF image 270 268 * are put into the pagemap. 269 * 270 * The address space and address space area must be locked prior to the call. 271 271 * 272 272 * @param area Address space area. … … 278 278 btree_node_t *leaf, *node; 279 279 uintptr_t start_anon = entry->p_vaddr + entry->p_filesz; 280 281 ASSERT(mutex_locked(&area->as->lock));282 ASSERT(mutex_locked(&area->lock));283 280 284 281 /*
Note:
See TracChangeset
for help on using the changeset viewer.