Lines Matching refs:rrp
563 static void init_rels(struct fobj_ro_reloc_paged *rrp, unsigned int reloc_offs, in init_rels() argument
566 unsigned int npg = rrp->rop.fobj.num_pages; in init_rels()
573 rrp->page_reloc_idx[n] = UINT16_MAX; in init_rels()
586 if (rrp->page_reloc_idx[pg_idx] == UINT16_MAX) in init_rels()
587 rrp->page_reloc_idx[pg_idx] = reln; in init_rels()
588 rrp->relocs[reln] = r - pg_idx * SMALL_PAGE_SIZE; in init_rels()
592 assert(reln == rrp->num_relocs); in init_rels()
600 struct fobj_ro_reloc_paged *rrp = NULL; in fobj_ro_reloc_paged_alloc() local
617 rrp = calloc(1, sizeof(*rrp) + num_pages * sizeof(uint16_t) + in fobj_ro_reloc_paged_alloc()
619 if (!rrp) in fobj_ro_reloc_paged_alloc()
621 rop_init(&rrp->rop, &ops_ro_reloc_paged, num_pages, hashes, store); in fobj_ro_reloc_paged_alloc()
622 rrp->page_reloc_idx = (uint16_t *)(rrp + 1); in fobj_ro_reloc_paged_alloc()
623 rrp->relocs = rrp->page_reloc_idx + num_pages; in fobj_ro_reloc_paged_alloc()
624 rrp->num_relocs = nrels; in fobj_ro_reloc_paged_alloc()
625 init_rels(rrp, reloc_offs, reloc, num_relocs); in fobj_ro_reloc_paged_alloc()
627 return &rrp->rop.fobj; in fobj_ro_reloc_paged_alloc()
639 struct fobj_ro_reloc_paged *rrp = to_rrp(fobj); in rrp_free() local
641 rop_uninit(&rrp->rop); in rrp_free()
642 free(rrp); in rrp_free()
648 struct fobj_ro_reloc_paged *rrp = to_rrp(fobj); in rrp_load_page() local
649 unsigned int end_rel = rrp->num_relocs; in rrp_load_page()
654 res = rop_load_page_helper(&rrp->rop, page_idx, va); in rrp_load_page()
660 if (rrp->page_reloc_idx[n] != UINT16_MAX) { in rrp_load_page()
661 end_rel = rrp->page_reloc_idx[n]; in rrp_load_page()
666 for (n = rrp->page_reloc_idx[page_idx]; n < end_rel; n++) { in rrp_load_page()
667 where = (void *)((vaddr_t)va + rrp->relocs[n]); in rrp_load_page()