summaryrefslogtreecommitdiff
path: root/sys/uvm
diff options
context:
space:
mode:
Diffstat (limited to 'sys/uvm')
-rw-r--r--sys/uvm/uvm_extern.h35
-rw-r--r--sys/uvm/uvm_fault.c4
-rw-r--r--sys/uvm/uvm_init.c6
-rw-r--r--sys/uvm/uvm_km.c22
-rw-r--r--sys/uvm/uvm_mmap.c9
-rw-r--r--sys/uvm/uvm_unix.c4
6 files changed, 42 insertions, 38 deletions
diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h
index 8656b4cdad4..75fe80365b8 100644
--- a/sys/uvm/uvm_extern.h
+++ b/sys/uvm/uvm_extern.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_extern.h,v 1.125 2014/12/05 04:12:48 uebayasi Exp $ */
+/* $OpenBSD: uvm_extern.h,v 1.126 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_extern.h,v 1.57 2001/03/09 01:02:12 chs Exp $ */
/*
@@ -80,24 +80,29 @@ typedef struct vm_map *vm_map_t;
struct vm_page;
typedef struct vm_page *vm_page_t;
+/*
+ * Bit assignments assigned by UVM_MAPFLAG() and extracted by
+ * UVM_{PROTECTION,INHERIT,MAXPROTECTION,ADVICE}():
+ * bits 0-2 protection
+ * bit 3 unused
+ * bits 4-5 inheritance
+ * bits 6-7 unused
+ * bits 8-10 max protection
+ * bit 11 unused
+ * bits 12-14 advice
+ * bit 15 unused
+ * bits 16-N flags
+ */
+
/* protections bits */
#define PROT_MASK (PROT_READ | PROT_WRITE | PROT_EXEC)
-/* 0x08: not used */
/* inherit codes */
-#define UVM_INH_MASK 0x30 /* inherit mask */
-#define UVM_INH_SHARE 0x00 /* "share" */
-#define UVM_INH_COPY 0x10 /* "copy" */
-#define UVM_INH_NONE 0x20 /* "none" */
-#define UVM_INH_ZERO 0x30 /* "zero" */
-
-/* 0x40, 0x80: not used */
-/* bits 0x700: max protection, 0x800: not used */
-/* bits 0x7000: advice, 0x8000: not used */
+#define MAP_INHERIT_MASK 0x3 /* inherit mask */
typedef int vm_prot_t;
-#define UVM_ADV_MASK 0x7 /* mask */
+#define MADV_MASK 0x7 /* mask */
/* mapping flags */
#define UVM_FLAG_FIXED 0x0010000 /* find space */
@@ -112,12 +117,12 @@ typedef int vm_prot_t;
/* macros to extract info */
#define UVM_PROTECTION(X) ((X) & PROT_MASK)
-#define UVM_INHERIT(X) (((X) & UVM_INH_MASK) >> 4)
+#define UVM_INHERIT(X) (((X) >> 4) & MAP_INHERIT_MASK)
#define UVM_MAXPROTECTION(X) (((X) >> 8) & PROT_MASK)
-#define UVM_ADVICE(X) (((X) >> 12) & UVM_ADV_MASK)
+#define UVM_ADVICE(X) (((X) >> 12) & MADV_MASK)
#define UVM_MAPFLAG(prot, maxprot, inh, advice, flags) \
- (((maxprot) << 8) | (prot) | (inh) | ((advice) << 12) | (flags))
+ ((prot) | ((maxprot) << 8) | ((inh) << 4) | ((advice) << 12) | (flags))
/* magic offset value */
#define UVM_UNKNOWN_OFFSET ((voff_t) -1)
diff --git a/sys/uvm/uvm_fault.c b/sys/uvm/uvm_fault.c
index 4c7cf86f945..fb6179393c1 100644
--- a/sys/uvm/uvm_fault.c
+++ b/sys/uvm/uvm_fault.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_fault.c,v 1.79 2014/11/16 12:31:00 deraadt Exp $ */
+/* $OpenBSD: uvm_fault.c,v 1.80 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_fault.c,v 1.51 2000/08/06 00:22:53 thorpej Exp $ */
/*
@@ -151,7 +151,7 @@ struct uvm_advice {
/*
* page range array: set up in uvmfault_init().
*/
-static struct uvm_advice uvmadvice[UVM_ADV_MASK + 1];
+static struct uvm_advice uvmadvice[MADV_MASK + 1];
#define UVM_MAXRANGE 16 /* must be max() of nback+nforw+1 */
diff --git a/sys/uvm/uvm_init.c b/sys/uvm/uvm_init.c
index b6120802173..6efe21078e8 100644
--- a/sys/uvm/uvm_init.c
+++ b/sys/uvm/uvm_init.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_init.c,v 1.35 2014/11/16 12:31:00 deraadt Exp $ */
+/* $OpenBSD: uvm_init.c,v 1.36 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_init.c,v 1.14 2000/06/27 17:29:23 mrg Exp $ */
/*
@@ -148,14 +148,14 @@ uvm_init(void)
kvm_start = trunc_page(DEADBEEF0) - PAGE_SIZE;
if (uvm_map(kernel_map, &kvm_start, 3 * PAGE_SIZE,
NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(PROT_NONE,
- PROT_NONE, UVM_INH_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)))
+ PROT_NONE, MAP_INHERIT_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)))
panic("uvm_init: cannot reserve dead beef @0x%x", DEADBEEF0);
#endif
#ifdef DEADBEEF1
kvm_start = trunc_page(DEADBEEF1) - PAGE_SIZE;
if (uvm_map(kernel_map, &kvm_start, 3 * PAGE_SIZE,
NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(PROT_NONE,
- PROT_NONE, UVM_INH_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)))
+ PROT_NONE, MAP_INHERIT_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)))
panic("uvm_init: cannot reserve dead beef @0x%x", DEADBEEF1);
#endif
/*
diff --git a/sys/uvm/uvm_km.c b/sys/uvm/uvm_km.c
index d0f21231d5c..53ddeef501c 100644
--- a/sys/uvm/uvm_km.c
+++ b/sys/uvm/uvm_km.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_km.c,v 1.121 2014/11/27 21:40:52 kettenis Exp $ */
+/* $OpenBSD: uvm_km.c,v 1.122 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_km.c,v 1.42 2001/01/14 02:10:01 thorpej Exp $ */
/*
@@ -184,7 +184,7 @@ uvm_km_init(vaddr_t start, vaddr_t end)
if (base != start && uvm_map(&kernel_map_store, &base, start - base,
NULL, UVM_UNKNOWN_OFFSET, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE,
- UVM_INH_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)) != 0)
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM, UVM_FLAG_FIXED)) != 0)
panic("uvm_km_init: could not reserve space for kernel");
kernel_map = &kernel_map_store;
@@ -211,7 +211,7 @@ uvm_km_suballoc(struct vm_map *map, vaddr_t *min, vaddr_t *max, vsize_t size,
/* first allocate a blank spot in the parent map */
if (uvm_map(map, min, size, NULL, UVM_UNKNOWN_OFFSET, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE,
- PROT_READ | PROT_WRITE, UVM_INH_NONE,
+ PROT_READ | PROT_WRITE, MAP_INHERIT_NONE,
POSIX_MADV_RANDOM, mapflags)) != 0) {
panic("uvm_km_suballoc: unable to allocate space in parent map");
}
@@ -341,7 +341,7 @@ uvm_km_kmemalloc_pla(struct vm_map *map, struct uvm_object *obj, vsize_t size,
/* allocate some virtual space */
if (__predict_false(uvm_map(map, &kva, size, obj, UVM_UNKNOWN_OFFSET,
valign, UVM_MAPFLAG(PROT_READ | PROT_WRITE,
- PROT_READ | PROT_WRITE, UVM_INH_NONE,
+ PROT_READ | PROT_WRITE, MAP_INHERIT_NONE,
POSIX_MADV_RANDOM, (flags & UVM_KMF_TRYLOCK))) != 0)) {
return(0);
}
@@ -460,7 +460,7 @@ uvm_km_alloc1(struct vm_map *map, vsize_t size, vsize_t align, boolean_t zeroit)
UVM_UNKNOWN_OFFSET, align,
UVM_MAPFLAG(PROT_READ | PROT_WRITE,
PROT_READ | PROT_WRITE | PROT_EXEC,
- UVM_INH_NONE, POSIX_MADV_RANDOM, 0)) != 0)) {
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM, 0)) != 0)) {
return(0);
}
@@ -548,7 +548,7 @@ uvm_km_valloc_align(struct vm_map *map, vsize_t size, vsize_t align, int flags)
if (__predict_false(uvm_map(map, &kva, size, uvm.kernel_object,
UVM_UNKNOWN_OFFSET, align,
UVM_MAPFLAG(PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE,
- UVM_INH_NONE, POSIX_MADV_RANDOM, flags)) != 0)) {
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM, flags)) != 0)) {
return(0);
}
@@ -583,7 +583,7 @@ uvm_km_valloc_prefer_wait(struct vm_map *map, vsize_t size, voff_t prefer)
if (__predict_true(uvm_map(map, &kva, size, uvm.kernel_object,
prefer, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE,
- UVM_INH_NONE, POSIX_MADV_RANDOM, 0)) == 0)) {
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM, 0)) == 0)) {
return(kva);
}
@@ -667,7 +667,7 @@ uvm_km_page_init(void)
if (uvm_map(kernel_map, &addr, (vsize_t)bulk << PAGE_SHIFT,
NULL, UVM_UNKNOWN_OFFSET, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE,
- PROT_READ | PROT_WRITE, UVM_INH_NONE,
+ PROT_READ | PROT_WRITE, MAP_INHERIT_NONE,
POSIX_MADV_RANDOM, UVM_KMF_TRYLOCK)) != 0) {
bulk /= 2;
continue;
@@ -732,7 +732,7 @@ uvm_km_thread(void *arg)
*/
flags = UVM_MAPFLAG(PROT_READ | PROT_WRITE,
PROT_READ | PROT_WRITE,
- UVM_INH_NONE, POSIX_MADV_RANDOM,
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM,
fp != NULL ? UVM_KMF_TRYLOCK : 0);
memset(pg, 0, sizeof(pg));
for (i = 0; i < nitems(pg); i++) {
@@ -746,7 +746,7 @@ uvm_km_thread(void *arg)
/* made progress, so don't sleep for more */
flags = UVM_MAPFLAG(PROT_READ | PROT_WRITE,
PROT_READ | PROT_WRITE,
- UVM_INH_NONE, POSIX_MADV_RANDOM,
+ MAP_INHERIT_NONE, POSIX_MADV_RANDOM,
UVM_KMF_TRYLOCK);
}
@@ -920,7 +920,7 @@ try_map:
map = *kv->kv_map;
va = vm_map_min(map);
if (uvm_map(map, &va, sz, uobj, kd->kd_prefer,
- kv->kv_align, UVM_MAPFLAG(prot, prot, UVM_INH_NONE,
+ kv->kv_align, UVM_MAPFLAG(prot, prot, MAP_INHERIT_NONE,
POSIX_MADV_RANDOM, mapflags))) {
if (kv->kv_wait && kd->kd_waitok) {
tsleep(map, PVM, "km_allocva", 0);
diff --git a/sys/uvm/uvm_mmap.c b/sys/uvm/uvm_mmap.c
index 10e92411f0b..860cb79bba0 100644
--- a/sys/uvm/uvm_mmap.c
+++ b/sys/uvm/uvm_mmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_mmap.c,v 1.101 2014/12/09 07:16:41 doug Exp $ */
+/* $OpenBSD: uvm_mmap.c,v 1.102 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_mmap.c,v 1.49 2001/02/18 21:19:08 chs Exp $ */
/*
@@ -892,8 +892,7 @@ sys_munlockall(struct proc *p, void *v, register_t *retval)
* uvm_mmap: internal version of mmap
*
* - used by sys_mmap, exec, and sysv shm
- * - handle is a vnode pointer or NULL for MAP_ANON (XXX: not true,
- * sysv shm uses "named anonymous memory")
+ * - handle is a vnode pointer or ignored for MAP_ANON
* - caller must page-align the file offset
*/
int
@@ -1010,8 +1009,8 @@ uvm_mmap(vm_map_t map, vaddr_t *addr, vsize_t size, vm_prot_t prot,
/* set up mapping flags */
uvmflag = UVM_MAPFLAG(prot, maxprot,
- (flags & MAP_SHARED) ? UVM_INH_SHARE : UVM_INH_COPY,
- advice, uvmflag);
+ (flags & MAP_SHARED) ? MAP_INHERIT_SHARE : MAP_INHERIT_COPY,
+ advice, uvmflag);
error = uvm_map(map, addr, size, uobj, foff, align, uvmflag);
diff --git a/sys/uvm/uvm_unix.c b/sys/uvm/uvm_unix.c
index 424ab04e1db..4e28942df14 100644
--- a/sys/uvm/uvm_unix.c
+++ b/sys/uvm/uvm_unix.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_unix.c,v 1.52 2014/11/17 03:15:58 deraadt Exp $ */
+/* $OpenBSD: uvm_unix.c,v 1.53 2014/12/15 02:24:23 guenther Exp $ */
/* $NetBSD: uvm_unix.c,v 1.18 2000/09/13 15:00:25 thorpej Exp $ */
/*
@@ -86,7 +86,7 @@ sys_obreak(struct proc *p, void *v, register_t *retval)
error = uvm_map(&vm->vm_map, &old, new - old, NULL,
UVM_UNKNOWN_OFFSET, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE,
- PROT_READ | PROT_WRITE | PROT_EXEC, UVM_INH_COPY,
+ PROT_READ | PROT_WRITE | PROT_EXEC, MAP_INHERIT_COPY,
POSIX_MADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED|
UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW));
if (error) {