733 static int
734 segkmem_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp)
735 {
736 ASSERT(RW_LOCK_HELD(&seg->s_as->a_lock));
737
738 if (seg->s_as != &kas)
739 panic("segkmem badop");
740
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 lgrp_mem_policy_info_t *
754 segkmem_getpolicy(struct seg *seg, caddr_t addr)
755 {
756 return (NULL);
757 }
758
759 /*ARGSUSED*/
760 static int
761 segkmem_capable(struct seg *seg, segcapability_t capability)
762 {
763 if (capability == S_CAPABILITY_NOMINFLT)
764 return (1);
765 return (0);
766 }
767
768 static struct seg_ops segkmem_ops = {
769 .fault = segkmem_fault,
770 .setprot = segkmem_setprot,
771 .checkprot = segkmem_checkprot,
772 .kluster = segkmem_kluster,
773 .dump = segkmem_dump,
774 .pagelock = segkmem_pagelock,
775 .getmemid = segkmem_getmemid,
776 .getpolicy = segkmem_getpolicy,
777 .capable = segkmem_capable,
778 };
779
780 int
781 segkmem_zio_create(struct seg *seg)
782 {
783 ASSERT(seg->s_as == &kas && RW_WRITE_HELD(&kas.a_lock));
784 seg->s_ops = &segkmem_ops;
785 seg->s_data = &zvp;
786 kas.a_size += seg->s_size;
787 return (0);
788 }
789
790 int
791 segkmem_create(struct seg *seg)
792 {
793 ASSERT(seg->s_as == &kas && RW_WRITE_HELD(&kas.a_lock));
794 seg->s_ops = &segkmem_ops;
795 seg->s_data = &kvp;
796 kas.a_size += seg->s_size;
|
733 static int
734 segkmem_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp)
735 {
736 ASSERT(RW_LOCK_HELD(&seg->s_as->a_lock));
737
738 if (seg->s_as != &kas)
739 panic("segkmem badop");
740
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
782 int
783 segkmem_create(struct seg *seg)
784 {
785 ASSERT(seg->s_as == &kas && RW_WRITE_HELD(&kas.a_lock));
786 seg->s_ops = &segkmem_ops;
787 seg->s_data = &kvp;
788 kas.a_size += seg->s_size;
|