Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/backend_elf.c

    r8f6c6264 r8a2474f  
    5757static void elf_destroy(as_area_t *);
    5858
    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);
     59static int elf_page_fault(as_area_t *area, uintptr_t addr, pf_access_t access);
     60static void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame);
    6161
    6262mem_backend_t elf_backend = {
     
    7070};
    7171
    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 
    8872bool elf_create(as_area_t *area)
    8973{
    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);
    9176
    9277        if (area->pages <= nonanon_pages)
     
    9883bool elf_resize(as_area_t *area, size_t new_pages)
    9984{
    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);
    10187
    10288        if (new_pages > area->pages) {
     
    207193void elf_destroy(as_area_t *area)
    208194{
    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);
    210197
    211198        if (area->pages > nonanon_pages)
Note: See TracChangeset for help on using the changeset viewer.