summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2014-01-16 16:28:19 +0000
committeravg <avg@FreeBSD.org>2014-01-16 16:28:19 +0000
commit5bc00a6112eadb1365612d2681aed5cfed2de262 (patch)
treec96d7a64b4b47d6884f5fe01649f546480f6215b
parentc80798a63fccbfab3e6400c391eab5f21c02474c (diff)
downloadFreeBSD-src-5bc00a6112eadb1365612d2681aed5cfed2de262.zip
FreeBSD-src-5bc00a6112eadb1365612d2681aed5cfed2de262.tar.gz
MFC r259612: ttm_bo_vm_lookup_rb: actually make use of the red-black tree
-rw-r--r--sys/dev/drm2/ttm/ttm_bo_vm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/drm2/ttm/ttm_bo_vm.c b/sys/dev/drm2/ttm/ttm_bo_vm.c
index b87380c..83ec76c 100644
--- a/sys/dev/drm2/ttm/ttm_bo_vm.c
+++ b/sys/dev/drm2/ttm/ttm_bo_vm.c
@@ -76,13 +76,16 @@ static struct ttm_buffer_object *ttm_bo_vm_lookup_rb(struct ttm_bo_device *bdev,
struct ttm_buffer_object *bo;
struct ttm_buffer_object *best_bo = NULL;
- RB_FOREACH(bo, ttm_bo_device_buffer_objects, &bdev->addr_space_rb) {
+ bo = RB_ROOT(&bdev->addr_space_rb);
+ while (bo != NULL) {
cur_offset = bo->vm_node->start;
if (page_start >= cur_offset) {
best_bo = bo;
if (page_start == cur_offset)
break;
- }
+ bo = RB_RIGHT(bo, vm_rb);
+ } else
+ bo = RB_LEFT(bo, vm_rb);
}
if (unlikely(best_bo == NULL))
OpenPOWER on IntegriCloud