From b02f89586f08816e40db2248750f9fb1612bddbe Mon Sep 17 00:00:00 2001 From: Lee <18800203378@163.com> Date: Sat, 7 Dec 2024 14:41:18 +0800 Subject: [PATCH] fix gettid not work in mac os Signed-off-by: ryne3366 --- src/sqlite3.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/sqlite3.c b/src/sqlite3.c index 4ff97d4..fd0893d 100644 --- a/src/sqlite3.c +++ b/src/sqlite3.c @@ -246830,11 +246830,21 @@ export_finish: } /************** End file hw_codec.c *****************************************/ #endif + #if SQLITE_OS_UNIX -#if defined(__linux__) && !defined(gettid) +#include #include -#define gettid() syscall(__NR_gettid) +static inline int OsGetTid(void) +{ +#if defined(__linux__) + return (int)syscall(__NR_gettid); +#elif defined(__APPLE__) + return (int)syscall(SYS_thread_selfid); +#else + return 0; #endif +} + static void ResetLockStatus(void) { (void)memset(&g_lockStatus, 0, sizeof(g_lockStatus)); @@ -246847,7 +246857,7 @@ static void TryRecordTid(int *tidBuf, int ofs, int lockLen) int lockOfs = ofs + lockLen; for (int i = ofs; i < lockOfs; i++) { if (tidBuf[i] == 0) { - tidBuf[i] = gettid(); + tidBuf[i] = OsGetTid(); } } } @@ -246858,7 +246868,7 @@ static void TryClearTid(int *tidBuf, int ofs, int lockLen) { int lockOfs = ofs + lockLen; for (int i = ofs; i < lockOfs; i++) { - if (tidBuf[i] == gettid()) { + if (tidBuf[i] == OsGetTid()) { tidBuf[i] = 0; } } -- Gitee