about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-08 13:11:42 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-08 13:11:42 +0200
commit85fc57faa32625f6b8294f0081d2af2e821750d9 (patch)
tree9606bf98062591622ccb9b26c511fd25a6f7fbdb /src
parentc8e10a004bbca5dcb653dd0a30833cded45bc612 (diff)
downloadbox64-85fc57faa32625f6b8294f0081d2af2e821750d9.tar.gz
box64-85fc57faa32625f6b8294f0081d2af2e821750d9.zip
Improve debugging trace of rb_tree
Diffstat (limited to 'src')
-rw-r--r--src/box64context.c2
-rw-r--r--src/custommem.c8
-rw-r--r--src/include/rbtree.h2
-rw-r--r--src/tools/rbtree.c12
4 files changed, 13 insertions, 11 deletions
diff --git a/src/box64context.c b/src/box64context.c
index 928357f4..2a2e1cae 100644
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -287,7 +287,7 @@ box64context_t *NewBox64Context(int argc)
     initAllHelpers(context);
     
     #ifdef DYNAREC
-    context->db_sizes = init_rbtree();
+    context->db_sizes = init_rbtree("db_sizes");
     #endif
 
     return context;
diff --git a/src/custommem.c b/src/custommem.c
index f0b1f72d..f7ddf6d9 100644
--- a/src/custommem.c
+++ b/src/custommem.c
@@ -1924,12 +1924,12 @@ void init_custommem_helper(box64context_t* ctx)
     if(inited) // already initialized
         return;
     inited = 1;
-    blockstree = init_rbtree();
+    blockstree = init_rbtree("blockstree");
     // if there is some blocks already
     if(n_blocks)
         for(int i=0; i<n_blocks; ++i)
             rb_set(blockstree, (uintptr_t)p_blocks[i].block, (uintptr_t)p_blocks[i].block+p_blocks[i].size, i);
-    memprot = init_rbtree();
+    memprot = init_rbtree("memprot");
     sigfillset(&critical_prot);
     init_mutexes();
 #ifdef DYNAREC
@@ -1954,9 +1954,9 @@ void init_custommem_helper(box64context_t* ctx)
 #endif
     pthread_atfork(NULL, NULL, atfork_child_custommem);
     // init mapallmem list
-    mapallmem = init_rbtree();
+    mapallmem = init_rbtree("mapallmem");
     // init mmapmem list
-    mmapmem = init_rbtree();
+    mmapmem = init_rbtree("mapmem");
     // Load current MMap
     loadProtectionFromMap();
     reserveHighMem();
diff --git a/src/include/rbtree.h b/src/include/rbtree.h
index c210d55d..0266c144 100644
--- a/src/include/rbtree.h
+++ b/src/include/rbtree.h
@@ -5,7 +5,7 @@
 
 typedef struct rbtree rbtree;
 
-rbtree* init_rbtree();
+rbtree* init_rbtree(const char* name);
 void delete_rbtree(rbtree *tree);
 
 uint32_t rb_get(rbtree *tree, uintptr_t addr);
diff --git a/src/tools/rbtree.c b/src/tools/rbtree.c
index 257a404f..211a1a4a 100644
--- a/src/tools/rbtree.c
+++ b/src/tools/rbtree.c
@@ -27,13 +27,15 @@ typedef struct rbnode {
 
 typedef struct rbtree {
     rbnode *root;
+    const char* name;
     int is_unstable;
 } rbtree;
 
-rbtree* init_rbtree() {
+rbtree* init_rbtree(const char* name) {
     rbtree* tree = rbtreeMalloc(sizeof(rbtree));
     tree->root = NULL;
     tree->is_unstable = 0;
+    tree->name = name?"(rbtree)":name;
     return tree;
 }
 
@@ -591,7 +593,7 @@ int rb_get_end(rbtree* tree, uintptr_t addr, uint32_t* val, uintptr_t* end) {
 
 int rb_set(rbtree *tree, uintptr_t start, uintptr_t end, uint32_t data) {
 // printf("rb_set( "); print_rbtree(tree); printf(" , 0x%lX, 0x%lX, %hhu);\n", start, end, data); fflush(stdout);
-dynarec_log(LOG_DEBUG, "set 0x%lX, 0x%lX, 0x%x\n", start, end, data);
+dynarec_log(LOG_DEBUG, "set %s: 0x%lX, 0x%lX, 0x%x\n", tree->name, start, end, data);
     if (!tree->root) {
         return add_range(tree, start, end, data);
     }
@@ -724,7 +726,7 @@ dynarec_log(LOG_DEBUG, "set 0x%lX, 0x%lX, 0x%x\n", start, end, data);
 
 int rb_unset(rbtree *tree, uintptr_t start, uintptr_t end) {
 // printf("rb_unset( "); print_rbtree(tree); printf(" , 0x%lX, 0x%lX);\n", start, end); fflush(stdout);
-dynarec_log(LOG_DEBUG, "rb_unset(tree, 0x%lX, 0x%lX);\n", start, end);
+dynarec_log(LOG_DEBUG, "unset: %s 0x%lX, 0x%lX);\n", tree->name, start, end);
     if (!tree->root) return 0;
 
     rbnode *node = tree->root, *prev = NULL, *next = NULL;
@@ -784,7 +786,7 @@ dynarec_log(LOG_DEBUG, "rb_unset(tree, 0x%lX, 0x%lX);\n", start, end);
 
 uintptr_t rb_get_righter(rbtree* tree)
 {
-dynarec_log(LOG_DEBUG, "rb_get_righter(tree);\n");
+dynarec_log(LOG_DEBUG, "rb_get_righter(%s);\n", tree->name);
     if (!tree->root) return 0;
 
     rbnode *node = tree->root;
@@ -858,7 +860,7 @@ void print_rbtree(const rbtree *tree) {
 
 #ifdef RBTREE_TEST
 int main() {
-    rbtree* tree = init_rbtree();
+    rbtree* tree = init_rbtree("test");
     print_rbtree(tree); fflush(stdout);
     /*int ret;
     ret = rb_set(tree, 0x43, 0x44, 0x01);