[BACK]Return to uvm_mmap.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / uvm

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/uvm/uvm_mmap.c between version 1.118.2.2 and 1.119

version 1.118.2.2, 2007/12/26 21:40:05 version 1.119, 2007/12/20 23:03:14
Line 231  sys_mincore(struct lwp *l, const struct 
Line 231  sys_mincore(struct lwp *l, const struct 
                 if (amap != NULL)                  if (amap != NULL)
                         amap_lock(amap);                          amap_lock(amap);
                 if (uobj != NULL)                  if (uobj != NULL)
                         mutex_enter(&uobj->vmobjlock);                          simple_lock(&uobj->vmobjlock);
   
                 for (/* nothing */; start < lim; start += PAGE_SIZE, vec++) {                  for (/* nothing */; start < lim; start += PAGE_SIZE, vec++) {
                         pgi = 0;                          pgi = 0;
Line 267  sys_mincore(struct lwp *l, const struct 
Line 267  sys_mincore(struct lwp *l, const struct 
                         (void) subyte(vec, pgi);                          (void) subyte(vec, pgi);
                 }                  }
                 if (uobj != NULL)                  if (uobj != NULL)
                         mutex_exit(&uobj->vmobjlock);                          simple_unlock(&uobj->vmobjlock);
                 if (amap != NULL)                  if (amap != NULL)
                         amap_unlock(amap);                          amap_unlock(amap);
         }          }
Line 1156  uvm_mmap(map, addr, size, prot, maxprot,
Line 1156  uvm_mmap(map, addr, size, prot, maxprot,
                          * then mark it as text.                           * then mark it as text.
                          */                           */
                         if (prot & PROT_EXEC) {                          if (prot & PROT_EXEC) {
                                 mutex_enter(&vp->v_interlock);                                  simple_lock(&uobj->vmobjlock);
                                 vn_markexec(vp);                                  vn_markexec(vp);
                                 mutex_exit(&vp->v_interlock);                                  simple_unlock(&uobj->vmobjlock);
                         }                          }
                 } else {                  } else {
                         int i = maxprot;                          int i = maxprot;
Line 1188  uvm_mmap(map, addr, size, prot, maxprot,
Line 1188  uvm_mmap(map, addr, size, prot, maxprot,
                  * with direct I/O.                   * with direct I/O.
                  */                   */
   
                 mutex_enter(&vp->v_interlock);                  simple_lock(&vp->v_interlock);
                 needwritemap = (vp->v_iflag & VI_WRMAP) == 0 &&                  needwritemap = (vp->v_iflag & VI_WRMAP) == 0 &&
                         (flags & MAP_SHARED) != 0 &&                          (flags & MAP_SHARED) != 0 &&
                         (maxprot & VM_PROT_WRITE) != 0;                          (maxprot & VM_PROT_WRITE) != 0;
                 if ((vp->v_iflag & VI_MAPPED) == 0 || needwritemap) {                  if ((vp->v_iflag & VI_MAPPED) == 0 || needwritemap) {
                         vn_lock(vp, LK_EXCLUSIVE | LK_RETRY | LK_INTERLOCK);                          vn_lock(vp, LK_EXCLUSIVE | LK_RETRY | LK_INTERLOCK);
                         mutex_enter(&vp->v_interlock);                          simple_lock(&vp->v_interlock);
                         vp->v_iflag |= VI_MAPPED;                          vp->v_iflag |= VI_MAPPED;
                         vp->v_vflag |= VV_MAPPED;                          vp->v_vflag |= VV_MAPPED;
                         if (needwritemap) {                          if (needwritemap) {
                                 vp->v_iflag |= VI_WRMAP;                                  vp->v_iflag |= VI_WRMAP;
                         }                          }
                         mutex_exit(&vp->v_interlock);                          simple_unlock(&vp->v_interlock);
                         VOP_UNLOCK(vp, 0);                          VOP_UNLOCK(vp, 0);
                 } else                  } else
                         mutex_exit(&vp->v_interlock);                          simple_unlock(&vp->v_interlock);
         }          }
   
         uvmflag = UVM_MAPFLAG(prot, maxprot,          uvmflag = UVM_MAPFLAG(prot, maxprot,

Legend:
Removed from v.1.118.2.2  
changed lines
  Added in v.1.119

CVSweb <webmaster@jp.NetBSD.org>