aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c335
1 files changed, 169 insertions, 166 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 5afece835033..4b3027c6dee6 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -38,7 +38,7 @@
* from: Utah $Hdr: vm_mmap.c 1.6 91/10/21$
*
* @(#)vm_mmap.c 8.4 (Berkeley) 1/12/94
- * $Id: vm_mmap.c,v 1.6 1994/09/02 15:06:51 davidg Exp $
+ * $Id: vm_mmap.c,v 1.7 1994/10/09 01:52:11 phk Exp $
*/
/*
@@ -63,6 +63,7 @@
#ifdef DEBUG
int mmapdebug = 0;
+
#define MDB_FOLLOW 0x01
#define MDB_SYNC 0x02
#define MDB_MAPIT 0x04
@@ -71,8 +72,9 @@ int mmapdebug = 0;
void pmap_object_init_pt();
struct sbrk_args {
- int incr;
+ int incr;
};
+
/* ARGSUSED */
int
sbrk(p, uap, retval)
@@ -86,8 +88,9 @@ sbrk(p, uap, retval)
}
struct sstk_args {
- int incr;
+ int incr;
};
+
/* ARGSUSED */
int
sstk(p, uap, retval)
@@ -102,8 +105,9 @@ sstk(p, uap, retval)
#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
struct getpagesize_args {
- int dummy;
+ int dummy;
};
+
/* ARGSUSED */
int
ogetpagesize(p, uap, retval)
@@ -115,16 +119,16 @@ ogetpagesize(p, uap, retval)
*retval = PAGE_SIZE;
return (0);
}
-#endif /* COMPAT_43 || COMPAT_SUNOS */
+#endif /* COMPAT_43 || COMPAT_SUNOS */
struct mmap_args {
- caddr_t addr;
- size_t len;
- int prot;
- int flags;
- int fd;
- long pad;
- off_t pos;
+ caddr_t addr;
+ size_t len;
+ int prot;
+ int flags;
+ int fd;
+ long pad;
+ off_t pos;
};
int
@@ -147,21 +151,21 @@ mmap(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_FOLLOW)
printf("mmap(%d): addr %x len %x pro %x flg %x fd %d pos %x\n",
- p->p_pid, uap->addr, uap->len, prot,
- flags, uap->fd, (vm_offset_t)uap->pos);
+ p->p_pid, uap->addr, uap->len, prot,
+ flags, uap->fd, (vm_offset_t) uap->pos);
#endif
/*
- * Address (if FIXED) must be page aligned.
- * Size is implicitly rounded to a page boundary.
+ * Address (if FIXED) must be page aligned. Size is implicitly rounded
+ * to a page boundary.
*/
addr = (vm_offset_t) uap->addr;
if (((flags & MAP_FIXED) && (addr & PAGE_MASK)) ||
- (ssize_t)uap->len < 0 || ((flags & MAP_ANON) && uap->fd != -1))
+ (ssize_t) uap->len < 0 || ((flags & MAP_ANON) && uap->fd != -1))
return (EINVAL);
size = (vm_size_t) round_page(uap->len);
/*
- * Check for illegal addresses. Watch out for address wrap...
- * Note that VM_*_ADDRESS are not constants due to casts (argh).
+ * Check for illegal addresses. Watch out for address wrap... Note
+ * that VM_*_ADDRESS are not constants due to casts (argh).
*/
if (flags & MAP_FIXED) {
if (VM_MAXUSER_ADDRESS > 0 && addr + size > VM_MAXUSER_ADDRESS)
@@ -174,11 +178,10 @@ mmap(p, uap, retval)
return (EINVAL);
}
/*
- * XXX if no hint provided for a non-fixed mapping place it after
- * the end of the largest possible heap.
- *
- * There should really be a pmap call to determine a reasonable
- * location.
+ * XXX if no hint provided for a non-fixed mapping place it after the
+ * end of the largest possible heap.
+ *
+ * There should really be a pmap call to determine a reasonable location.
*/
if (addr == 0 && (flags & MAP_FIXED) == 0)
addr = round_page(p->p_vmspace->vm_daddr + MAXDSIZ);
@@ -190,20 +193,20 @@ mmap(p, uap, retval)
maxprot = VM_PROT_ALL;
} else {
/*
- * Mapping file, get fp for validation.
- * Obtain vnode and make sure it is of appropriate type.
+ * Mapping file, get fp for validation. Obtain vnode and make
+ * sure it is of appropriate type.
*/
- if (((unsigned)uap->fd) >= fdp->fd_nfiles ||
+ if (((unsigned) uap->fd) >= fdp->fd_nfiles ||
(fp = fdp->fd_ofiles[uap->fd]) == NULL)
return (EBADF);
if (fp->f_type != DTYPE_VNODE)
return (EINVAL);
- vp = (struct vnode *)fp->f_data;
+ vp = (struct vnode *) fp->f_data;
if (vp->v_type != VREG && vp->v_type != VCHR)
return (EINVAL);
/*
- * XXX hack to handle use of /dev/zero to map anon
- * memory (ala SunOS).
+ * XXX hack to handle use of /dev/zero to map anon memory (ala
+ * SunOS).
*/
if (vp->v_type == VCHR && iszerodev(vp->v_rdev)) {
handle = NULL;
@@ -216,8 +219,8 @@ mmap(p, uap, retval)
* writability if mapping is shared; in this case,
* current and max prot are dictated by the open file.
* XXX use the vnode instead? Problem is: what
- * credentials do we use for determination?
- * What if proc does a setuid?
+ * credentials do we use for determination? What if
+ * proc does a setuid?
*/
maxprot = VM_PROT_EXECUTE; /* ??? */
if (fp->f_flag & FREAD)
@@ -231,24 +234,24 @@ mmap(p, uap, retval)
return (EACCES);
} else
maxprot |= VM_PROT_WRITE;
- handle = (caddr_t)vp;
+ handle = (caddr_t) vp;
}
}
error = vm_mmap(&p->p_vmspace->vm_map, &addr, size, prot, maxprot,
- flags, handle, (vm_offset_t)uap->pos);
+ flags, handle, (vm_offset_t) uap->pos);
if (error == 0)
- *retval = (int)addr;
+ *retval = (int) addr;
return (error);
}
#ifdef COMPAT_43
struct ommap_args {
- caddr_t addr;
- int len;
- int prot;
- int flags;
- int fd;
- long pos;
+ caddr_t addr;
+ int len;
+ int prot;
+ int flags;
+ int fd;
+ long pos;
};
int
ommap(p, uap, retval)
@@ -261,12 +264,13 @@ ommap(p, uap, retval)
0,
PROT_EXEC,
PROT_WRITE,
- PROT_EXEC|PROT_WRITE,
+ PROT_EXEC | PROT_WRITE,
PROT_READ,
- PROT_EXEC|PROT_READ,
- PROT_WRITE|PROT_READ,
- PROT_EXEC|PROT_WRITE|PROT_READ,
+ PROT_EXEC | PROT_READ,
+ PROT_WRITE | PROT_READ,
+ PROT_EXEC | PROT_WRITE | PROT_READ,
};
+
#define OMAP_ANON 0x0002
#define OMAP_COPY 0x0020
#define OMAP_SHARED 0x0010
@@ -275,7 +279,7 @@ ommap(p, uap, retval)
nargs.addr = uap->addr;
nargs.len = uap->len;
- nargs.prot = cvtbsdprot[uap->prot&0x7];
+ nargs.prot = cvtbsdprot[uap->prot & 0x7];
nargs.flags = 0;
if (uap->flags & OMAP_ANON)
nargs.flags |= MAP_ANON;
@@ -293,12 +297,12 @@ ommap(p, uap, retval)
nargs.pos = uap->pos;
return (mmap(p, &nargs, retval));
}
-#endif /* COMPAT_43 */
+#endif /* COMPAT_43 */
struct msync_args {
- caddr_t addr;
- int len;
+ caddr_t addr;
+ int len;
};
int
msync(p, uap, retval)
@@ -313,22 +317,21 @@ msync(p, uap, retval)
boolean_t syncio, invalidate;
#ifdef DEBUG
- if (mmapdebug & (MDB_FOLLOW|MDB_SYNC))
+ if (mmapdebug & (MDB_FOLLOW | MDB_SYNC))
printf("msync(%d): addr %x len %x\n",
- p->p_pid, uap->addr, uap->len);
+ p->p_pid, uap->addr, uap->len);
#endif
- if (((int)uap->addr & PAGE_MASK) || uap->addr + uap->len < uap->addr)
+ if (((int) uap->addr & PAGE_MASK) || uap->addr + uap->len < uap->addr)
return (EINVAL);
map = &p->p_vmspace->vm_map;
- addr = (vm_offset_t)uap->addr;
- size = (vm_size_t)uap->len;
+ addr = (vm_offset_t) uap->addr;
+ size = (vm_size_t) uap->len;
/*
* XXX Gak! If size is zero we are supposed to sync "all modified
- * pages with the region containing addr". Unfortunately, we
- * don't really keep track of individual mmaps so we approximate
- * by flushing the range of the map entry containing addr.
- * This can be incorrect if the region splits or is coalesced
- * with a neighbor.
+ * pages with the region containing addr". Unfortunately, we don't
+ * really keep track of individual mmaps so we approximate by flushing
+ * the range of the map entry containing addr. This can be incorrect
+ * if the region splits or is coalesced with a neighbor.
*/
if (size == 0) {
vm_map_entry_t entry;
@@ -344,23 +347,23 @@ msync(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_SYNC)
printf("msync: cleaning/flushing address range [%x-%x)\n",
- addr, addr+size);
+ addr, addr + size);
#endif
/*
- * Could pass this in as a third flag argument to implement
- * Sun's MS_ASYNC.
+ * Could pass this in as a third flag argument to implement Sun's
+ * MS_ASYNC.
*/
syncio = TRUE;
/*
- * XXX bummer, gotta flush all cached pages to ensure
- * consistency with the file system cache. Otherwise, we could
- * pass this in to implement Sun's MS_INVALIDATE.
+ * XXX bummer, gotta flush all cached pages to ensure consistency with
+ * the file system cache. Otherwise, we could pass this in to
+ * implement Sun's MS_INVALIDATE.
*/
invalidate = TRUE;
/*
* Clean the pages and interpret the return value.
*/
- rv = vm_map_clean(map, addr, addr+size, syncio, invalidate);
+ rv = vm_map_clean(map, addr, addr + size, syncio, invalidate);
switch (rv) {
case KERN_SUCCESS:
break;
@@ -375,8 +378,8 @@ msync(p, uap, retval)
}
struct munmap_args {
- caddr_t addr;
- int len;
+ caddr_t addr;
+ int len;
};
int
munmap(p, uap, retval)
@@ -391,18 +394,18 @@ munmap(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_FOLLOW)
printf("munmap(%d): addr %x len %x\n",
- p->p_pid, uap->addr, uap->len);
+ p->p_pid, uap->addr, uap->len);
#endif
addr = (vm_offset_t) uap->addr;
if ((addr & PAGE_MASK) || uap->len < 0)
- return(EINVAL);
+ return (EINVAL);
size = (vm_size_t) round_page(uap->len);
if (size == 0)
- return(0);
+ return (0);
/*
- * Check for illegal addresses. Watch out for address wrap...
- * Note that VM_*_ADDRESS are not constants due to casts (argh).
+ * Check for illegal addresses. Watch out for address wrap... Note
+ * that VM_*_ADDRESS are not constants due to casts (argh).
*/
if (VM_MAXUSER_ADDRESS > 0 && addr + size > VM_MAXUSER_ADDRESS)
return (EINVAL);
@@ -417,10 +420,10 @@ munmap(p, uap, retval)
* Make sure entire range is allocated.
*/
if (!vm_map_check_protection(map, addr, addr + size, VM_PROT_NONE))
- return(EINVAL);
+ return (EINVAL);
/* returns nothing but KERN_SUCCESS anyway */
- (void) vm_map_remove(map, addr, addr+size);
- return(0);
+ (void) vm_map_remove(map, addr, addr + size);
+ return (0);
}
void
@@ -440,9 +443,9 @@ munmapfd(p, fd)
}
struct mprotect_args {
- caddr_t addr;
- int len;
- int prot;
+ caddr_t addr;
+ int len;
+ int prot;
};
int
mprotect(p, uap, retval)
@@ -457,17 +460,17 @@ mprotect(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_FOLLOW)
printf("mprotect(%d): addr %x len %x prot %d\n",
- p->p_pid, uap->addr, uap->len, uap->prot);
+ p->p_pid, uap->addr, uap->len, uap->prot);
#endif
- addr = (vm_offset_t)uap->addr;
+ addr = (vm_offset_t) uap->addr;
if ((addr & PAGE_MASK) || uap->len < 0)
- return(EINVAL);
- size = (vm_size_t)uap->len;
+ return (EINVAL);
+ size = (vm_size_t) uap->len;
prot = uap->prot & VM_PROT_ALL;
- switch (vm_map_protect(&p->p_vmspace->vm_map, addr, addr+size, prot,
- FALSE)) {
+ switch (vm_map_protect(&p->p_vmspace->vm_map, addr, addr + size, prot,
+ FALSE)) {
case KERN_SUCCESS:
return (0);
case KERN_PROTECTION_FAILURE:
@@ -477,10 +480,11 @@ mprotect(p, uap, retval)
}
struct madvise_args {
- caddr_t addr;
- int len;
- int behav;
+ caddr_t addr;
+ int len;
+ int behav;
};
+
/* ARGSUSED */
int
madvise(p, uap, retval)
@@ -494,10 +498,11 @@ madvise(p, uap, retval)
}
struct mincore_args {
- caddr_t addr;
- int len;
- char *vec;
+ caddr_t addr;
+ int len;
+ char *vec;
};
+
/* ARGSUSED */
int
mincore(p, uap, retval)
@@ -511,8 +516,8 @@ mincore(p, uap, retval)
}
struct mlock_args {
- caddr_t addr;
- size_t len;
+ caddr_t addr;
+ size_t len;
};
int
mlock(p, uap, retval)
@@ -528,12 +533,12 @@ mlock(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_FOLLOW)
printf("mlock(%d): addr %x len %x\n",
- p->p_pid, uap->addr, uap->len);
+ p->p_pid, uap->addr, uap->len);
#endif
- addr = (vm_offset_t)uap->addr;
+ addr = (vm_offset_t) uap->addr;
if ((addr & PAGE_MASK) || uap->addr + uap->len < uap->addr)
return (EINVAL);
- size = round_page((vm_size_t)uap->len);
+ size = round_page((vm_size_t) uap->len);
if (atop(size) + cnt.v_wire_count > vm_page_max_wired)
return (EAGAIN);
#ifdef pmap_wired_count
@@ -546,13 +551,13 @@ mlock(p, uap, retval)
return (error);
#endif
- error = vm_map_pageable(&p->p_vmspace->vm_map, addr, addr+size, FALSE);
+ error = vm_map_pageable(&p->p_vmspace->vm_map, addr, addr + size, FALSE);
return (error == KERN_SUCCESS ? 0 : ENOMEM);
}
struct munlock_args {
- caddr_t addr;
- size_t len;
+ caddr_t addr;
+ size_t len;
};
int
munlock(p, uap, retval)
@@ -567,9 +572,9 @@ munlock(p, uap, retval)
#ifdef DEBUG
if (mmapdebug & MDB_FOLLOW)
printf("munlock(%d): addr %x len %x\n",
- p->p_pid, uap->addr, uap->len);
+ p->p_pid, uap->addr, uap->len);
#endif
- addr = (vm_offset_t)uap->addr;
+ addr = (vm_offset_t) uap->addr;
if ((addr & PAGE_MASK) || uap->addr + uap->len < uap->addr)
return (EINVAL);
#ifndef pmap_wired_count
@@ -577,9 +582,9 @@ munlock(p, uap, retval)
if (error)
return (error);
#endif
- size = round_page((vm_size_t)uap->len);
+ size = round_page((vm_size_t) uap->len);
- error = vm_map_pageable(&p->p_vmspace->vm_map, addr, addr+size, TRUE);
+ error = vm_map_pageable(&p->p_vmspace->vm_map, addr, addr + size, TRUE);
return (error == KERN_SUCCESS ? 0 : ENOMEM);
}
@@ -613,21 +618,21 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
*addr = round_page(*addr);
} else {
fitit = FALSE;
- (void)vm_deallocate(map, *addr, size);
+ (void) vm_deallocate(map, *addr, size);
}
/*
- * Lookup/allocate pager. All except an unnamed anonymous lookup
- * gain a reference to ensure continued existance of the object.
- * (XXX the exception is to appease the pageout daemon)
+ * Lookup/allocate pager. All except an unnamed anonymous lookup gain
+ * a reference to ensure continued existance of the object. (XXX the
+ * exception is to appease the pageout daemon)
*/
if (flags & MAP_ANON)
type = PG_DFLT;
else {
- vp = (struct vnode *)handle;
+ vp = (struct vnode *) handle;
if (vp->v_type == VCHR) {
type = PG_DEVICE;
- handle = (caddr_t)vp->v_rdev;
+ handle = (caddr_t) vp->v_rdev;
} else
type = PG_VNODE;
}
@@ -638,6 +643,9 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
* Find object and release extra reference gained by lookup
*/
object = vm_object_lookup(pager);
+ if (handle && object == NULL) {
+ panic("vm_mmap: vm_object_lookup failed");
+ }
vm_object_deallocate(object);
/*
@@ -645,7 +653,7 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
*/
if (flags & MAP_ANON) {
rv = vm_allocate_with_pager(map, addr, size, fitit,
- pager, foff, TRUE);
+ pager, foff, TRUE);
if (rv != KERN_SUCCESS) {
if (handle == NULL)
vm_pager_deallocate(pager);
@@ -654,34 +662,32 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
goto out;
}
/*
- * Don't cache anonymous objects.
- * Loses the reference gained by vm_pager_allocate.
- * Note that object will be NULL when handle == NULL,
- * this is ok since vm_allocate_with_pager has made
- * sure that these objects are uncached.
+ * Don't cache anonymous objects. Loses the reference gained
+ * by vm_pager_allocate. Note that object will be NULL when
+ * handle == NULL, this is ok since vm_allocate_with_pager has
+ * made sure that these objects are uncached.
*/
(void) pager_cache(object, FALSE);
#ifdef DEBUG
if (mmapdebug & MDB_MAPIT)
printf("vm_mmap(%d): ANON *addr %x size %x pager %x\n",
- curproc->p_pid, *addr, size, pager);
+ curproc->p_pid, *addr, size, pager);
#endif
}
/*
- * Must be a mapped file.
- * Distinguish between character special and regular files.
+ * Must be a mapped file. Distinguish between character special and
+ * regular files.
*/
else if (vp->v_type == VCHR) {
rv = vm_allocate_with_pager(map, addr, size, fitit,
- pager, foff, FALSE);
+ pager, foff, FALSE);
/*
- * Uncache the object and lose the reference gained
- * by vm_pager_allocate(). If the call to
- * vm_allocate_with_pager() was sucessful, then we
- * gained an additional reference ensuring the object
- * will continue to exist. If the call failed then
- * the deallocate call below will terminate the
- * object which is fine.
+ * Uncache the object and lose the reference gained by
+ * vm_pager_allocate(). If the call to
+ * vm_allocate_with_pager() was sucessful, then we gained an
+ * additional reference ensuring the object will continue to
+ * exist. If the call failed then the deallocate call below
+ * will terminate the object which is fine.
*/
(void) pager_cache(object, FALSE);
if (rv != KERN_SUCCESS)
@@ -694,23 +700,23 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
#ifdef DEBUG
if (object == NULL)
printf("vm_mmap: no object: vp %x, pager %x\n",
- vp, pager);
+ vp, pager);
#endif
/*
- * Map it directly.
- * Allows modifications to go out to the vnode.
+ * Map it directly. Allows modifications to go out to the
+ * vnode.
*/
if (flags & MAP_SHARED) {
rv = vm_allocate_with_pager(map, addr, size,
- fitit, pager,
- foff, FALSE);
+ fitit, pager,
+ foff, FALSE);
if (rv != KERN_SUCCESS) {
vm_object_deallocate(object);
goto out;
}
/*
- * Don't cache the object. This is the easiest way
- * of ensuring that data gets back to the filesystem
+ * Don't cache the object. This is the easiest way of
+ * ensuring that data gets back to the filesystem
* because vnode_pager_deallocate() will fsync the
* vnode. pager_cache() will lose the extra ref.
*/
@@ -719,43 +725,42 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
else
vm_object_deallocate(object);
- if( map->pmap)
- pmap_object_init_pt(map->pmap, *addr, object, foff, size);
+ if (map->pmap)
+ pmap_object_init_pt(map->pmap, *addr, object, foff, size);
}
/*
- * Copy-on-write of file. Two flavors.
- * MAP_COPY is true COW, you essentially get a snapshot of
- * the region at the time of mapping. MAP_PRIVATE means only
- * that your changes are not reflected back to the object.
- * Changes made by others will be seen.
+ * Copy-on-write of file. Two flavors. MAP_COPY is true COW,
+ * you essentially get a snapshot of the region at the time of
+ * mapping. MAP_PRIVATE means only that your changes are not
+ * reflected back to the object. Changes made by others will
+ * be seen.
*/
else {
vm_map_t tmap;
vm_offset_t off;
/* locate and allocate the target address space */
- rv = vm_map_find(map, NULL, (vm_offset_t)0,
- addr, size, fitit);
+ rv = vm_map_find(map, NULL, (vm_offset_t) 0,
+ addr, size, fitit);
if (rv != KERN_SUCCESS) {
vm_object_deallocate(object);
goto out;
}
tmap = vm_map_create(pmap_create(size), VM_MIN_ADDRESS,
- VM_MIN_ADDRESS+size, TRUE);
+ VM_MIN_ADDRESS + size, TRUE);
off = VM_MIN_ADDRESS;
rv = vm_allocate_with_pager(tmap, &off, size,
- TRUE, pager,
- foff, FALSE);
+ TRUE, pager,
+ foff, FALSE);
if (rv != KERN_SUCCESS) {
vm_object_deallocate(object);
vm_map_deallocate(tmap);
goto out;
}
/*
- * (XXX)
- * MAP_PRIVATE implies that we see changes made by
- * others. To ensure that we need to guarentee that
- * no copy object is created (otherwise original
+ * (XXX) MAP_PRIVATE implies that we see changes made
+ * by others. To ensure that we need to guarentee
+ * that no copy object is created (otherwise original
* pages would be pushed to the copy object and we
* would never see changes made by others). We
* totally sleeze it right now by marking the object
@@ -764,13 +769,12 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
if ((flags & MAP_COPY) == 0)
object->flags |= OBJ_INTERNAL;
rv = vm_map_copy(map, tmap, *addr, size, off,
- FALSE, FALSE);
+ FALSE, FALSE);
object->flags &= ~OBJ_INTERNAL;
/*
- * (XXX)
- * My oh my, this only gets worse...
- * Force creation of a shadow object so that
- * vm_map_fork will do the right thing.
+ * (XXX) My oh my, this only gets worse... Force
+ * creation of a shadow object so that vm_map_fork
+ * will do the right thing.
*/
if ((flags & MAP_COPY) == 0) {
vm_map_t tmap;
@@ -782,19 +786,18 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
tmap = map;
vm_map_lookup(&tmap, *addr, VM_PROT_WRITE,
- &tentry, &tobject, &toffset,
- &tprot, &twired, &tsu);
+ &tentry, &tobject, &toffset,
+ &tprot, &twired, &tsu);
vm_map_lookup_done(tmap, tentry);
}
/*
- * (XXX)
- * Map copy code cannot detect sharing unless a
+ * (XXX) Map copy code cannot detect sharing unless a
* sharing map is involved. So we cheat and write
* protect everything ourselves.
*/
vm_object_pmap_copy(object, foff, foff + size);
- if( map->pmap)
- pmap_object_init_pt(map->pmap, *addr, object, foff, size);
+ if (map->pmap)
+ pmap_object_init_pt(map->pmap, *addr, object, foff, size);
vm_object_deallocate(object);
vm_map_deallocate(tmap);
if (rv != KERN_SUCCESS)
@@ -803,18 +806,18 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
#ifdef DEBUG
if (mmapdebug & MDB_MAPIT)
printf("vm_mmap(%d): FILE *addr %x size %x pager %x\n",
- curproc->p_pid, *addr, size, pager);
+ curproc->p_pid, *addr, size, pager);
#endif
}
/*
- * Correct protection (default is VM_PROT_ALL).
- * If maxprot is different than prot, we must set both explicitly.
+ * Correct protection (default is VM_PROT_ALL). If maxprot is
+ * different than prot, we must set both explicitly.
*/
rv = KERN_SUCCESS;
if (maxprot != VM_PROT_ALL)
- rv = vm_map_protect(map, *addr, *addr+size, maxprot, TRUE);
+ rv = vm_map_protect(map, *addr, *addr + size, maxprot, TRUE);
if (rv == KERN_SUCCESS && prot != maxprot)
- rv = vm_map_protect(map, *addr, *addr+size, prot, FALSE);
+ rv = vm_map_protect(map, *addr, *addr + size, prot, FALSE);
if (rv != KERN_SUCCESS) {
(void) vm_deallocate(map, *addr, size);
goto out;
@@ -823,7 +826,7 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
* Shared memory is also shared with children.
*/
if (flags & MAP_SHARED) {
- rv = vm_map_inherit(map, *addr, *addr+size, VM_INHERIT_SHARE);
+ rv = vm_map_inherit(map, *addr, *addr + size, VM_INHERIT_SHARE);
if (rv != KERN_SUCCESS) {
(void) vm_deallocate(map, *addr, size);
goto out;