Changes in kernel/generic/src/mm/backend_elf.c [8f6c6264:8a2474f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_elf.c
r8f6c6264 r8a2474f 57 57 static void elf_destroy(as_area_t *); 58 58 59 static int elf_page_fault(as_area_t * , uintptr_t, pf_access_t);60 static void elf_frame_free(as_area_t * , uintptr_t, uintptr_t);59 static int elf_page_fault(as_area_t *area, uintptr_t addr, pf_access_t access); 60 static void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame); 61 61 62 62 mem_backend_t elf_backend = { … … 70 70 }; 71 71 72 static size_t elf_nonanon_pages_get(as_area_t *area)73 {74 elf_segment_header_t *entry = area->backend_data.segment;75 uintptr_t first = ALIGN_UP(entry->p_vaddr, PAGE_SIZE);76 uintptr_t last = ALIGN_DOWN(entry->p_vaddr + entry->p_filesz,77 PAGE_SIZE);78 79 if (entry->p_flags & PF_W)80 return 0;81 82 if (last < first)83 return 0;84 85 return last - first;86 }87 88 72 bool elf_create(as_area_t *area) 89 73 { 90 size_t nonanon_pages = elf_nonanon_pages_get(area); 74 elf_segment_header_t *entry = area->backend_data.segment; 75 size_t nonanon_pages = ALIGN_DOWN(entry->p_filesz, PAGE_SIZE); 91 76 92 77 if (area->pages <= nonanon_pages) … … 98 83 bool elf_resize(as_area_t *area, size_t new_pages) 99 84 { 100 size_t nonanon_pages = elf_nonanon_pages_get(area); 85 elf_segment_header_t *entry = area->backend_data.segment; 86 size_t nonanon_pages = ALIGN_DOWN(entry->p_filesz, PAGE_SIZE); 101 87 102 88 if (new_pages > area->pages) { … … 207 193 void elf_destroy(as_area_t *area) 208 194 { 209 size_t nonanon_pages = elf_nonanon_pages_get(area); 195 elf_segment_header_t *entry = area->backend_data.segment; 196 size_t nonanon_pages = ALIGN_DOWN(entry->p_filesz, PAGE_SIZE); 210 197 211 198 if (area->pages > nonanon_pages)
Note:
See TracChangeset
for help on using the changeset viewer.