aboutsummaryrefslogtreecommitdiff
path: root/src/mem_regions.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-06-01 15:22:06 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-06-01 15:22:06 +0300
commite8f80bae97a835b6b256228d4bbeaf48ae16dcbb (patch)
tree82605e5f057840c314615d4581311c197033705d /src/mem_regions.c
parentbc600ecc3bdf0f189861dfb840f70c2339a7a853 (diff)
downloadkmi-e8f80bae97a835b6b256228d4bbeaf48ae16dcbb.tar.gz
kmi-e8f80bae97a835b6b256228d4bbeaf48ae16dcbb.zip
slight tweaks to sptree stuff
Diffstat (limited to 'src/mem_regions.c')
-rw-r--r--src/mem_regions.c31
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;
}