From 5ea247b84c046af8894cbe27ff5596e738fd47a1 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Wed, 9 Apr 2025 21:21:55 +0800 Subject: Made custommem OS-independent (#2517) --- src/custommem.c | 9 ++------- src/include/box64context.h | 15 +++++++++++++++ src/include/mysignal.h | 15 +++++++++++++++ src/include/os.h | 17 ++--------------- 4 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 src/include/mysignal.h (limited to 'src') diff --git a/src/custommem.c b/src/custommem.c index 90b14c7a..b20c85c5 100644 --- a/src/custommem.c +++ b/src/custommem.c @@ -16,12 +16,11 @@ #include "callback.h" #include "threads.h" #include "x64trace.h" -#include "signals.h" -#include #include "custommem.h" #include "khash.h" #include "threads.h" #include "rbtree.h" +#include "mysignal.h" #ifdef DYNAREC #include "dynablock.h" #include "dynarec/dynablock_private.h" @@ -2185,9 +2184,7 @@ void init_custommem_helper(box64context_t* ctx) return; inited = 1; -#ifndef _WIN32 // TODO: better wow64 support? cur_brk = dlsym(RTLD_NEXT, "__curbrk"); -#endif blockstree = rbtree_init("blockstree"); // if there is some blocks already if(n_blocks) @@ -2217,9 +2214,7 @@ void init_custommem_helper(box64context_t* ctx) lockaddress = kh_init(lockaddress); rbt_dynmem = rbtree_init("rbt_dynmem"); #endif -#ifndef _WIN32 // TODO: better wow64 support? pthread_atfork(NULL, NULL, atfork_child_custommem); -#endif // init mapallmem list mapallmem = rbtree_init("mapallmem"); // init mmapmem list @@ -2325,7 +2320,7 @@ void fini_custommem_helper(box64context_t *ctx) for(int i=0; i +#else +typedef struct { + int a; +} sigset_t; + +#define sigfillset(x) +#define pthread_sigmask(a, b, c) +#endif + +#endif // __MYSIGNAL_H_ \ No newline at end of file diff --git a/src/include/os.h b/src/include/os.h index d68a518b..f6e7371d 100644 --- a/src/include/os.h +++ b/src/include/os.h @@ -10,6 +10,8 @@ #else typedef __int64 ssize_t; +#define dlsym(a, b) NULL + #define PROT_READ 0x1 #define PROT_WRITE 0x2 #define PROT_EXEC 0x4 @@ -58,21 +60,6 @@ void PersonalityAddrLimit32Bit(void); #define SigSetJmp(a, b) 0 #endif -#ifndef USE_CUSTOM_MUTEX -#define mutex_lock(A) pthread_mutex_lock(A) -#define mutex_trylock(A) pthread_mutex_trylock(A) -#define mutex_unlock(A) pthread_mutex_unlock(A) -#else -#define mutex_lock(A) \ - do { \ - uint32_t tid = (uint32_t)GetTID(); \ - while (native_lock_storeifnull_d(A, tid)) \ - sched_yield(); \ - } while (0) -#define mutex_trylock(A) native_lock_storeifnull_d(A, (uint32_t)GetTID()) -#define mutex_unlock(A) native_lock_storeifref_d(A, 0, (uint32_t)GetTID()) -#endif - #ifndef _WIN32 #include #define NEW_JUMPBUFF(name) \ -- cgit 1.4.1