Print this page
use NULL getmemid segop as a shorthand for ENODEV
Instead of forcing every segment driver to implement a dummy function to
return (hopefully) ENODEV, handle NULL getmemid segop function pointer as
"return ENODEV" shorthand.


1997 int
1998 segop_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***page,
1999     enum lock_type type, enum seg_rw rw)
2000 {
2001         VERIFY3P(seg->s_ops->pagelock, !=, NULL);
2002 
2003         return (seg->s_ops->pagelock(seg, addr, len, page, type, rw));
2004 }
2005 
2006 int
2007 segop_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc)
2008 {
2009         VERIFY3P(seg->s_ops->setpagesize, !=, NULL);
2010 
2011         return (seg->s_ops->setpagesize(seg, addr, len, szc));
2012 }
2013 
2014 int
2015 segop_getmemid(struct seg *seg, caddr_t addr, memid_t *mp)
2016 {
2017         VERIFY3P(seg->s_ops->getmemid, !=, NULL);

2018 
2019         return (seg->s_ops->getmemid(seg, addr, mp));
2020 }
2021 
2022 struct lgrp_mem_policy_info *
2023 segop_getpolicy(struct seg *seg, caddr_t addr)
2024 {
2025         if (seg->s_ops->getpolicy == NULL)
2026                 return (NULL);
2027 
2028         return (seg->s_ops->getpolicy(seg, addr));
2029 }
2030 
2031 int
2032 segop_capable(struct seg *seg, segcapability_t cap)
2033 {
2034         if (seg->s_ops->capable == NULL)
2035                 return (0);
2036 
2037         return (seg->s_ops->capable(seg, cap));


1997 int
1998 segop_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***page,
1999     enum lock_type type, enum seg_rw rw)
2000 {
2001         VERIFY3P(seg->s_ops->pagelock, !=, NULL);
2002 
2003         return (seg->s_ops->pagelock(seg, addr, len, page, type, rw));
2004 }
2005 
2006 int
2007 segop_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc)
2008 {
2009         VERIFY3P(seg->s_ops->setpagesize, !=, NULL);
2010 
2011         return (seg->s_ops->setpagesize(seg, addr, len, szc));
2012 }
2013 
2014 int
2015 segop_getmemid(struct seg *seg, caddr_t addr, memid_t *mp)
2016 {
2017         if (seg->s_ops->getmemid == NULL)
2018                 return (ENODEV);
2019 
2020         return (seg->s_ops->getmemid(seg, addr, mp));
2021 }
2022 
2023 struct lgrp_mem_policy_info *
2024 segop_getpolicy(struct seg *seg, caddr_t addr)
2025 {
2026         if (seg->s_ops->getpolicy == NULL)
2027                 return (NULL);
2028 
2029         return (seg->s_ops->getpolicy(seg, addr));
2030 }
2031 
2032 int
2033 segop_capable(struct seg *seg, segcapability_t cap)
2034 {
2035         if (seg->s_ops->capable == NULL)
2036                 return (0);
2037 
2038         return (seg->s_ops->capable(seg, cap));