741 /*
742 * If it is one of segkp pages, call into segkp.
743 */
744 if (segkp_bitmap && seg == &kvseg &&
745 BT_TEST(segkp_bitmap, btop((uintptr_t)(addr - seg->s_base))))
746 return (segop_getmemid(segkp, addr, memidp));
747
748 panic("segkmem badop");
749 return (0);
750 }
751
752 /*ARGSUSED*/
753 static int
754 segkmem_capable(struct seg *seg, segcapability_t capability)
755 {
756 if (capability == S_CAPABILITY_NOMINFLT)
757 return (1);
758 return (0);
759 }
760
761 static struct seg_ops segkmem_ops = {
762 .fault = segkmem_fault,
763 .setprot = segkmem_setprot,
764 .checkprot = segkmem_checkprot,
765 .kluster = segkmem_kluster,
766 .dump = segkmem_dump,
767 .pagelock = segkmem_pagelock,
768 .getmemid = segkmem_getmemid,
769 .capable = segkmem_capable,
770 };
771
772 int
773 segkmem_zio_create(struct seg *seg)
774 {
775 ASSERT(seg->s_as == &kas && RW_WRITE_HELD(&kas.a_lock));
776 seg->s_ops = &segkmem_ops;
777 seg->s_data = &zvp;
778 kas.a_size += seg->s_size;
779 return (0);
780 }
781
|
741 /*
742 * If it is one of segkp pages, call into segkp.
743 */
744 if (segkp_bitmap && seg == &kvseg &&
745 BT_TEST(segkp_bitmap, btop((uintptr_t)(addr - seg->s_base))))
746 return (segop_getmemid(segkp, addr, memidp));
747
748 panic("segkmem badop");
749 return (0);
750 }
751
752 /*ARGSUSED*/
753 static int
754 segkmem_capable(struct seg *seg, segcapability_t capability)
755 {
756 if (capability == S_CAPABILITY_NOMINFLT)
757 return (1);
758 return (0);
759 }
760
761 static const struct seg_ops segkmem_ops = {
762 .fault = segkmem_fault,
763 .setprot = segkmem_setprot,
764 .checkprot = segkmem_checkprot,
765 .kluster = segkmem_kluster,
766 .dump = segkmem_dump,
767 .pagelock = segkmem_pagelock,
768 .getmemid = segkmem_getmemid,
769 .capable = segkmem_capable,
770 };
771
772 int
773 segkmem_zio_create(struct seg *seg)
774 {
775 ASSERT(seg->s_as == &kas && RW_WRITE_HELD(&kas.a_lock));
776 seg->s_ops = &segkmem_ops;
777 seg->s_data = &zvp;
778 kas.a_size += seg->s_size;
779 return (0);
780 }
781
|