diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-06-01 15:22:06 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-06-01 15:22:06 +0300 |
| commit | e8f80bae97a835b6b256228d4bbeaf48ae16dcbb (patch) | |
| tree | 82605e5f057840c314615d4581311c197033705d /src/mem_regions.c | |
| parent | bc600ecc3bdf0f189861dfb840f70c2339a7a853 (diff) | |
| download | kmi-e8f80bae97a835b6b256228d4bbeaf48ae16dcbb.tar.gz kmi-e8f80bae97a835b6b256228d4bbeaf48ae16dcbb.zip | |
slight tweaks to sptree stuff
Diffstat (limited to 'src/mem_regions.c')
| -rw-r--r-- | src/mem_regions.c | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/mem_regions.c b/src/mem_regions.c index 9468774..707c2f0 100644 --- a/src/mem_regions.c +++ b/src/mem_regions.c @@ -54,10 +54,13 @@ static struct mem_region *__insert_free_region(struct mem_region_root *r, struct mem_region *m) { + /* this could be simplified by using my gsptrees in kmx, but at least + * this ensures 'inlining' of the condition checking so I'll let it stay + * for now */ struct sp_node *n = sp_root(&r->free_regions), *p = NULL; vm_t start = m->start; size_t size = m->end - m->start; - enum sp_dir d = LEFT; + enum sp_dir d = SP_LEFT; m->sp_n = (struct sp_node){ 0 }; @@ -68,30 +71,26 @@ static struct mem_region *__insert_free_region(struct mem_region_root *r, if (size < nsize) { n = sp_left(n); - d = LEFT; + d = SP_LEFT; } else if (size > nsize) { n = sp_right(n); - d = RIGHT; + d = SP_RIGHT; } else if (start < t->start) { n = sp_left(n); - d = LEFT; + d = SP_LEFT; } else { n = sp_right(n); - d = RIGHT; + d = SP_RIGHT; } } - if (sp_root(&r->free_regions)) - sp_insert(&sp_root(&r->free_regions), p, &m->sp_n, d); - else - sp_root(&r->free_regions) = &m->sp_n; - + sp_insert(&sp_root(&r->free_regions), p, &m->sp_n, d); return m; } @@ -107,7 +106,7 @@ static struct mem_region *__insert_used_region(struct mem_region_root *r, { struct sp_node *n = sp_root(&r->used_regions), *p = NULL; vm_t start = m->start; - enum sp_dir d = LEFT; + enum sp_dir d = SP_LEFT; m->sp_n = (struct sp_node){ 0 }; @@ -118,22 +117,18 @@ static struct mem_region *__insert_used_region(struct mem_region_root *r, if (start < t->start) { n = sp_left(n); - d = LEFT; + d = SP_LEFT; } else { /* we should never encounter a situation where start = * t->start */ n = sp_right(n); - d = RIGHT; + d = SP_RIGHT; } } - if (sp_root(&r->used_regions)) - sp_insert(&sp_root(&r->used_regions), p, &m->sp_n, d); - else - sp_root(&r->used_regions) = &m->sp_n; - + sp_insert(&sp_root(&r->used_regions), p, &m->sp_n, d); return m; } |
