-int
-__elf_populate_mapped(struct mm_region* region, void* pg, off_t offset)
-{
- struct elf32_phdr* phdr = (struct elf32_phdr*)region->data;
- size_t segsz = phdr->p_filesz;
- size_t segoff = offset - phdr->p_offset;
-
- if (segoff >= segsz) {
- return 0;
- }
-
- struct v_file* file = region->mfile;
- size_t rdlen = MIN(segsz - segoff, PG_SIZE);
-
- if (rdlen == PG_SIZE) {
- // This is because we want to exploit any optimization on read_page
- return file->ops->read_page(file->inode, pg, PG_SIZE, offset);
- } else {
- return file->ops->read(file->inode, pg, rdlen, offset);
- }
-}
-
-void
-__elf_destruct_mapped(struct mm_region* region)
-{
- vfree(region->data);
-}
-