/* * Adds an entry. Does not sort. */ int NaClVmmapAdd(struct NaClVmmap *self, uintptr_t page_num, size_t npages, int prot, struct NaClMemObj *nmop) { struct NaClVmmapEntry *entry; NaClLog(2, ("NaClVmmapAdd(0x%08"NACL_PRIxPTR", 0x%"NACL_PRIxPTR", " "0x%"NACL_PRIxS", 0x%x, " "0x%08"NACL_PRIxPTR")\n"), (uintptr_t) self, page_num, npages, prot, (uintptr_t) nmop); if (self->nvalid == self->size) { size_t new_size = 2 * self->size; struct NaClVmmapEntry **new_map; new_map = realloc(self->vmentry, new_size * sizeof *new_map); if (NULL == new_map) { return 0; } self->vmentry = new_map; self->size = new_size; } /* self->nvalid < self->size */ entry = NaClVmmapEntryMake(page_num, npages, prot, nmop); self->vmentry[self->nvalid] = entry; self->is_sorted = 0; ++self->nvalid; return 1; }
void NaClVmmapAdd(struct NaClVmmap *self, uintptr_t page_num, size_t npages, int prot, int flags, struct NaClDesc *desc, nacl_off64_t offset, nacl_off64_t file_size) { struct NaClVmmapEntry *entry; NaClLog(2, ("NaClVmmapAdd(0x%08"NACL_PRIxPTR", 0x%"NACL_PRIxPTR", " "0x%"NACL_PRIxS", 0x%x, 0x%x, 0x%"NACL_PRIxPTR", " "0x%"NACL_PRIx64")\n"), (uintptr_t) self, page_num, npages, prot, flags, (uintptr_t) desc, offset); if (self->nvalid == self->size) { size_t new_size = 2 * self->size; struct NaClVmmapEntry **new_map; new_map = realloc(self->vmentry, new_size * sizeof *new_map); if (NULL == new_map) { NaClLog(LOG_FATAL, "NaClVmmapAdd: could not allocate memory\n"); return; } self->vmentry = new_map; self->size = new_size; } /* self->nvalid < self->size */ entry = NaClVmmapEntryMake(page_num, npages, prot, flags, desc, offset, file_size); self->vmentry[self->nvalid] = entry; self->is_sorted = 0; ++self->nvalid; }