Changes in kernel/generic/src/mm/backend_elf.c [98000fb:8f80c77] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_elf.c
r98000fb r8f80c77 38 38 #include <lib/elf.h> 39 39 #include <debug.h> 40 #include < arch/types.h>40 #include <typedefs.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)); 87 90 88 91 if (!as_area_check_access(area, access)) … … 232 235 void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame) 233 236 { 234 elf_header_t *elf = area->backend_data.elf;235 237 elf_segment_header_t *entry = area->backend_data.segment; 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)); 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 244 246 start_anon = entry->p_vaddr + entry->p_filesz; 245 247 … … 257 259 * lower part is backed by the ELF image and the upper is 258 260 * anonymous). In any case, a frame needs to be freed. 259 */ 261 */ 260 262 frame_free(frame); 261 263 } … … 267 269 * Otherwise only portions of the area that are not backed by the ELF image 268 270 * 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)); 280 283 281 284 /*
Note:
See TracChangeset
for help on using the changeset viewer.