Print this page
6154 const-ify segment ops structures


  37 #include <sys/cpuvar.h>
  38 #include <sys/kmem.h>
  39 #include <sys/strsubr.h>
  40 #include <sys/sysmacros.h>
  41 #include <sys/frame.h>
  42 #include <sys/stack.h>
  43 #include <sys/proc.h>
  44 #include <sys/priv.h>
  45 #include <sys/policy.h>
  46 #include <sys/ontrap.h>
  47 #include <sys/vmsystm.h>
  48 #include <sys/prsystm.h>
  49 
  50 #include <vm/as.h>
  51 #include <vm/seg.h>
  52 #include <vm/seg_dev.h>
  53 #include <vm/seg_vn.h>
  54 #include <vm/seg_spt.h>
  55 #include <vm/seg_kmem.h>
  56 
  57 extern struct seg_ops segdev_ops;       /* needs a header file */
  58 extern struct seg_ops segspt_shmops;    /* needs a header file */
  59 
  60 static int
  61 page_valid(struct seg *seg, caddr_t addr)
  62 {
  63         struct segvn_data *svd;
  64         vnode_t *vp;
  65         vattr_t vattr;
  66 
  67         /*
  68          * Fail if the page doesn't map to a page in the underlying
  69          * mapped file, if an underlying mapped file exists.
  70          */
  71         vattr.va_mask = AT_SIZE;
  72         if (seg->s_ops == &segvn_ops &&
  73             segop_getvp(seg, addr, &vp) == 0 &&
  74             vp != NULL && vp->v_type == VREG &&
  75             VOP_GETATTR(vp, &vattr, 0, CRED(), NULL) == 0) {
  76                 u_offset_t size = roundup(vattr.va_size, (u_offset_t)PAGESIZE);
  77                 u_offset_t offset = segop_getoffset(seg, addr);
  78 




  37 #include <sys/cpuvar.h>
  38 #include <sys/kmem.h>
  39 #include <sys/strsubr.h>
  40 #include <sys/sysmacros.h>
  41 #include <sys/frame.h>
  42 #include <sys/stack.h>
  43 #include <sys/proc.h>
  44 #include <sys/priv.h>
  45 #include <sys/policy.h>
  46 #include <sys/ontrap.h>
  47 #include <sys/vmsystm.h>
  48 #include <sys/prsystm.h>
  49 
  50 #include <vm/as.h>
  51 #include <vm/seg.h>
  52 #include <vm/seg_dev.h>
  53 #include <vm/seg_vn.h>
  54 #include <vm/seg_spt.h>
  55 #include <vm/seg_kmem.h>
  56 
  57 extern const struct seg_ops segdev_ops; /* needs a header file */
  58 extern const struct seg_ops segspt_shmops;      /* needs a header file */
  59 
  60 static int
  61 page_valid(struct seg *seg, caddr_t addr)
  62 {
  63         struct segvn_data *svd;
  64         vnode_t *vp;
  65         vattr_t vattr;
  66 
  67         /*
  68          * Fail if the page doesn't map to a page in the underlying
  69          * mapped file, if an underlying mapped file exists.
  70          */
  71         vattr.va_mask = AT_SIZE;
  72         if (seg->s_ops == &segvn_ops &&
  73             segop_getvp(seg, addr, &vp) == 0 &&
  74             vp != NULL && vp->v_type == VREG &&
  75             VOP_GETATTR(vp, &vattr, 0, CRED(), NULL) == 0) {
  76                 u_offset_t size = roundup(vattr.va_size, (u_offset_t)PAGESIZE);
  77                 u_offset_t offset = segop_getoffset(seg, addr);
  78