Exemple #1
0
/*
 * 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;
}
Exemple #2
0
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;
}