diff options
author | 2016-09-16 01:51:40 +0000 | |
---|---|---|
committer | 2016-09-16 01:51:40 +0000 | |
commit | 71b0131cf651addd85015f815583a5a4b69a4ec7 (patch) | |
tree | 8592e49c5609fe79a31d21fc46adc7211a7f104c | |
parent | sync (diff) | |
download | wireguard-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.c | 41 | ||||
-rw-r--r-- | sys/uvm/uvm_addr.h | 6 | ||||
-rw-r--r-- | sys/uvm/uvm_map.h | 4 |
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; |