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, |