Lines Matching defs:si
152 @param si The ELF segment infor structure, read from the ELF header.
157 sl_elf_load_region(struct sl_elf_segment_info si, serv_connection_t* fsSession)
163 (unsigned int)si.vaddr, (unsigned int)(si.vaddr + si.segmentSize));
171 seL4_Word alignCorrectionOffset = si.vaddr - REFOS_PAGE_ALIGN(si.vaddr);
172 if (alignCorrectionOffset > si.source) {
179 elfSegment->dataspace = data_open(REFOS_PROCSERV_EP, "anon", 0, 0, si.fileSize, &error);
188 si.source - alignCorrectionOffset);
195 int windowEnd = sl_roundup_page(si.vaddr + si.fileSize);
196 assert(windowEnd > si.vaddr && si.vaddr + si.fileSize <= windowEnd);
197 int windowSize = windowEnd - si.vaddr;
198 assert(((si.vaddr + windowSize) % REFOS_PAGE_SIZE) == 0);
202 elfSegment->window = proc_create_mem_window(REFOS_PAGE_ALIGN(si.vaddr), windowSize);
222 if (si.segmentSize < si.fileSize) {
226 if (windowSize >= si.segmentSize) {
231 seL4_Word zeroSegment = si.segmentSize - windowSize;
234 error = sl_create_zero_segment(si.vaddr + windowSize, zeroSegment, zeroSegment, NULL);
261 struct sl_elf_segment_info si = {};
270 si.source = elf_getProgramHeaderOffset(file, i);
271 si.fileSize = elf_getProgramHeaderFileSize(file, i);
272 si.segmentSize = elf_getProgramHeaderMemorySize(file, i);
273 si.vaddr = elf_getProgramHeaderVaddr(file, i);
274 si.flags = elf_getProgramHeaderFlags(file, i);
276 error = sl_elf_load_region(si, fsSession);
284 selfloaderState.endOfProgram = si.vaddr + si.segmentSize;