741 if (!(map[i].u.g.g_flags & SEGMF_GFLAGS_WR)) {
742 mapop[i].flags |= GNTMAP_readonly;
743 }
744 }
745 e = xen_map_gref(GNTTABOP_map_grant_ref, mapop, cnt, B_TRUE);
746 if ((e != 0) || (mapop[0].status != GNTST_okay)) {
747 return (FC_MAKE_ERR(EFAULT));
748 }
749
750 /* save handle for segmf_release_grefs() and mark it as mapped */
751 for (i = 0; i < cnt; i++) {
752 ASSERT(mapop[i].status == GNTST_okay);
753 map[i].u.g.g_handle = mapop[i].handle;
754 map[i].u.g.g_flags |= SEGMF_GFLAGS_MAPPED;
755 }
756
757 return (0);
758 }
759
760 static struct seg_ops segmf_ops = {
761 segmf_dup,
762 segmf_unmap,
763 segmf_free,
764 segmf_fault,
765 segmf_faulta,
766 segmf_setprot,
767 segmf_checkprot,
768 (int (*)())segmf_kluster,
769 (size_t (*)(struct seg *))NULL, /* swapout */
770 segmf_sync,
771 segmf_incore,
772 segmf_lockop,
773 segmf_getprot,
774 segmf_getoffset,
775 segmf_gettype,
776 segmf_getvp,
777 segmf_advise,
778 segmf_dump,
779 segmf_pagelock,
780 segmf_setpagesize,
781 segmf_getmemid,
782 segmf_getpolicy,
783 segmf_capable,
784 seg_inherit_notsup
785 };
|
741 if (!(map[i].u.g.g_flags & SEGMF_GFLAGS_WR)) {
742 mapop[i].flags |= GNTMAP_readonly;
743 }
744 }
745 e = xen_map_gref(GNTTABOP_map_grant_ref, mapop, cnt, B_TRUE);
746 if ((e != 0) || (mapop[0].status != GNTST_okay)) {
747 return (FC_MAKE_ERR(EFAULT));
748 }
749
750 /* save handle for segmf_release_grefs() and mark it as mapped */
751 for (i = 0; i < cnt; i++) {
752 ASSERT(mapop[i].status == GNTST_okay);
753 map[i].u.g.g_handle = mapop[i].handle;
754 map[i].u.g.g_flags |= SEGMF_GFLAGS_MAPPED;
755 }
756
757 return (0);
758 }
759
760 static struct seg_ops segmf_ops = {
761 .dup = segmf_dup,
762 .unmap = segmf_unmap,
763 .free = segmf_free,
764 .fault = segmf_fault,
765 .faulta = segmf_faulta,
766 .setprot = segmf_setprot,
767 .checkprot = segmf_checkprot,
768 .kluster = segmf_kluster,
769 .sync = segmf_sync,
770 .incore = segmf_incore,
771 .lockop = segmf_lockop,
772 .getprot = segmf_getprot,
773 .getoffset = segmf_getoffset,
774 .gettype = segmf_gettype,
775 .getvp = segmf_getvp,
776 .advise = segmf_advise,
777 .dump = segmf_dump,
778 .pagelock = segmf_pagelock,
779 .setpagesize = segmf_setpagesize,
780 .getmemid = segmf_getmemid,
781 .getpolicy = segmf_getpolicy,
782 .capable = segmf_capable,
783 .inherit = seg_inherit_notsup,
784 };
|