summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2016-09-16 01:51:40 +0000
committerdlg <dlg@openbsd.org>2016-09-16 01:51:40 +0000
commit71b0131cf651addd85015f815583a5a4b69a4ec7 (patch)
tree8592e49c5609fe79a31d21fc46adc7211a7f104c
parentsync (diff)
downloadwireguard-openbsd-71b0131cf651addd85015f815583a5a4b69a4ec7.tar.xz
wireguard-openbsd-71b0131cf651addd85015f815583a5a4b69a4ec7.zip
move uaddr_free_rbtree from RB macros to RBT functions
-rw-r--r--sys/uvm/uvm_addr.c41
-rw-r--r--sys/uvm/uvm_addr.h6
-rw-r--r--sys/uvm/uvm_map.h4
3 files changed, 26 insertions, 25 deletions
diff --git a/sys/uvm/uvm_addr.c b/sys/uvm/uvm_addr.c
index 7552608df84..8303ce206e0 100644
--- a/sys/uvm/uvm_addr.c
+++ b/sys/uvm/uvm_addr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_addr.c,v 1.20 2016/09/16 01:09:53 dlg Exp $ */
+/* $OpenBSD: uvm_addr.c,v 1.21 2016/09/16 01:51:40 dlg Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -93,8 +93,9 @@ struct uaddr_pivot_state {
* Free space comparison.
* Compares smaller free-space before larger free-space.
*/
-static __inline int
-uvm_mapent_fspace_cmp(struct vm_map_entry *e1, struct vm_map_entry *e2)
+static inline int
+uvm_mapent_fspace_cmp(const struct vm_map_entry *e1,
+ const struct vm_map_entry *e2)
{
if (e1->fspace != e2->fspace)
return (e1->fspace < e2->fspace ? -1 : 1);
@@ -196,14 +197,14 @@ uvm_addr_entrybyspace(struct uaddr_free_rbtree *free, vsize_t sz)
{
struct vm_map_entry *tmp, *res;
- tmp = RB_ROOT(free);
+ tmp = RBT_ROOT(uaddr_free_rbtree, free);
res = NULL;
while (tmp) {
if (tmp->fspace >= sz) {
res = tmp;
- tmp = RB_LEFT(tmp, dfree.rbtree);
+ tmp = RBT_LEFT(uaddr_free_rbtree, tmp);
} else if (tmp->fspace < sz)
- tmp = RB_RIGHT(tmp, dfree.rbtree);
+ tmp = RBT_RIGHT(uaddr_free_rbtree, tmp);
}
return res;
}
@@ -913,7 +914,7 @@ uaddr_bestfit_create(vaddr_t minaddr, vaddr_t maxaddr)
uaddr->ubf_uaddr.uaddr_minaddr = minaddr;
uaddr->ubf_uaddr.uaddr_maxaddr = maxaddr;
uaddr->ubf_uaddr.uaddr_functions = &uaddr_bestfit_functions;
- RB_INIT(&uaddr->ubf_free);
+ RBT_INIT(uaddr_free_rbtree, &uaddr->ubf_free);
return &uaddr->ubf_uaddr;
}
@@ -931,7 +932,7 @@ uaddr_bestfit_insert(struct vm_map *map, struct uvm_addr_state *uaddr_p,
struct vm_map_entry *rb_rv;
uaddr = (struct uaddr_bestfit_state *)uaddr_p;
- if ((rb_rv = RB_INSERT(uaddr_free_rbtree, &uaddr->ubf_free, entry)) !=
+ if ((rb_rv = RBT_INSERT(uaddr_free_rbtree, &uaddr->ubf_free, entry)) !=
NULL) {
panic("%s: duplicate insertion: state %p "
"interting %p, colliding with %p", __func__,
@@ -946,7 +947,7 @@ uaddr_bestfit_remove(struct vm_map *map, struct uvm_addr_state *uaddr_p,
struct uaddr_bestfit_state *uaddr;
uaddr = (struct uaddr_bestfit_state *)uaddr_p;
- if (RB_REMOVE(uaddr_free_rbtree, &uaddr->ubf_free, entry) != entry)
+ if (RBT_REMOVE(uaddr_free_rbtree, &uaddr->ubf_free, entry) != entry)
panic("%s: entry was not in tree", __func__);
}
@@ -978,7 +979,7 @@ uaddr_bestfit_select(struct vm_map *map, struct uvm_addr_state *uaddr_p,
while (uvm_addr_fitspace(&min, &max,
VMMAP_FREE_START(entry), VMMAP_FREE_END(entry),
sz, align, offset, 0, guardsz) != 0) {
- entry = RB_NEXT(uaddr_free_rbtree, &uaddr->ubf_free, entry);
+ entry = RBT_NEXT(uaddr_free_rbtree, entry);
if (entry == NULL)
return ENOMEM;
}
@@ -1119,7 +1120,7 @@ uaddr_pivot_newpivot(struct vm_map *map, struct uaddr_pivot_state *uaddr,
*/
path = arc4random();
found = NULL;
- entry = RB_ROOT(&uaddr->up_free);
+ entry = RBT_ROOT(uaddr_free_rbtree, &uaddr->up_free);
while (entry != NULL) {
fit_error = uvm_addr_fitspace(&min, &max,
MAX(VMMAP_FREE_START(entry), minaddr),
@@ -1135,13 +1136,13 @@ uaddr_pivot_newpivot(struct vm_map *map, struct uaddr_pivot_state *uaddr,
/* Next. */
if (fit_error != 0)
- entry = RB_RIGHT(entry, dfree.rbtree);
+ entry = RBT_RIGHT(uaddr_free_rbtree, entry);
else if ((path & 0x1) == 0) {
path >>= 1;
- entry = RB_RIGHT(entry, dfree.rbtree);
+ entry = RBT_RIGHT(uaddr_free_rbtree, entry);
} else {
path >>= 1;
- entry = RB_LEFT(entry, dfree.rbtree);
+ entry = RBT_LEFT(uaddr_free_rbtree, entry);
}
}
if (found == NULL)
@@ -1315,7 +1316,7 @@ uaddr_pivot_insert(struct vm_map *map, struct uvm_addr_state *uaddr_p,
vaddr_t start, end;
uaddr = (struct uaddr_pivot_state *)uaddr_p;
- if ((rb_rv = RB_INSERT(uaddr_free_rbtree, &uaddr->up_free, entry)) !=
+ if ((rb_rv = RBT_INSERT(uaddr_free_rbtree, &uaddr->up_free, entry)) !=
NULL) {
panic("%s: duplicate insertion: state %p "
"inserting entry %p which collides with %p", __func__,
@@ -1355,7 +1356,7 @@ uaddr_pivot_remove(struct vm_map *map, struct uvm_addr_state *uaddr_p,
struct uaddr_pivot *p;
uaddr = (struct uaddr_pivot_state *)uaddr_p;
- if (RB_REMOVE(uaddr_free_rbtree, &uaddr->up_free, entry) != entry)
+ if (RBT_REMOVE(uaddr_free_rbtree, &uaddr->up_free, entry) != entry)
panic("%s: entry was not in tree", __func__);
/*
@@ -1389,7 +1390,7 @@ uaddr_pivot_create(vaddr_t minaddr, vaddr_t maxaddr)
uaddr->up_uaddr.uaddr_minaddr = minaddr;
uaddr->up_uaddr.uaddr_maxaddr = maxaddr;
uaddr->up_uaddr.uaddr_functions = &uaddr_pivot_functions;
- RB_INIT(&uaddr->up_free);
+ RBT_INIT(uaddr_free_rbtree, &uaddr->up_free);
memset(uaddr->up_pivots, 0, sizeof(uaddr->up_pivots));
return &uaddr->up_uaddr;
@@ -1422,10 +1423,10 @@ uaddr_pivot_print(struct uvm_addr_state *uaddr_p, boolean_t full,
if (!full)
return;
- if (RB_EMPTY(&uaddr->up_free))
+ if (RBT_EMPTY(uaddr_free_rbtree, &uaddr->up_free))
(*pr)("\tempty\n");
/* Print list of free space. */
- RB_FOREACH(entry, uaddr_free_rbtree, &uaddr->up_free) {
+ RBT_FOREACH(entry, uaddr_free_rbtree, &uaddr->up_free) {
(*pr)("\t0x%lx - 0x%lx free (0x%lx bytes)\n",
VMMAP_FREE_START(entry), VMMAP_FREE_END(entry),
VMMAP_FREE_END(entry) - VMMAP_FREE_START(entry));
@@ -1551,6 +1552,6 @@ uaddr_stack_brk_create(vaddr_t minaddr, vaddr_t maxaddr)
#ifndef SMALL_KERNEL
-RB_GENERATE(uaddr_free_rbtree, vm_map_entry, dfree.rbtree,
+RBT_GENERATE(uaddr_free_rbtree, vm_map_entry, dfree.rbtree,
uvm_mapent_fspace_cmp);
#endif /* !SMALL_KERNEL */
diff --git a/sys/uvm/uvm_addr.h b/sys/uvm/uvm_addr.h
index 568a62fc862..74a2cf456f1 100644
--- a/sys/uvm/uvm_addr.h
+++ b/sys/uvm/uvm_addr.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_addr.h,v 1.5 2015/03/30 21:05:17 miod Exp $ */
+/* $OpenBSD: uvm_addr.h,v 1.6 2016/09/16 01:51:40 dlg Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -108,8 +108,8 @@ void uvm_addr_print(struct uvm_addr_state *, const char *,
/*
* Kernel bootstrap allocator.
*/
-RB_HEAD(uaddr_free_rbtree, vm_map_entry);
-RB_PROTOTYPE(uaddr_free_rbtree, vm_map_entry, dfree.rbtree,
+RBT_HEAD(uaddr_free_rbtree, vm_map_entry);
+RBT_PROTOTYPE(uaddr_free_rbtree, vm_map_entry, dfree.rbtree,
uvm_mapent_fspace_cmp);
extern struct uvm_addr_state uaddr_kbootstrap;
diff --git a/sys/uvm/uvm_map.h b/sys/uvm/uvm_map.h
index 1fdd72d60eb..09fee07ac0f 100644
--- a/sys/uvm/uvm_map.h
+++ b/sys/uvm/uvm_map.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_map.h,v 1.57 2016/09/16 01:09:53 dlg Exp $ */
+/* $OpenBSD: uvm_map.h,v 1.58 2016/09/16 01:51:40 dlg Exp $ */
/* $NetBSD: uvm_map.h,v 1.24 2001/02/18 21:19:08 chs Exp $ */
/*
@@ -165,7 +165,7 @@ struct vm_map_entry {
} daddrs;
union {
- RB_ENTRY(vm_map_entry) rbtree; /* Link freespace tree. */
+ RBT_ENTRY(vm_map_entry) rbtree; /* Link freespace tree. */
TAILQ_ENTRY(vm_map_entry) tailq;/* Link freespace queue. */
TAILQ_ENTRY(vm_map_entry) deadq;/* dead entry queue */
} dfree;