Print this page
segop_getpolicy already checks for a NULL op


 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;