diff --git a/src/sqlite3.c b/src/sqlite3.c index 4ff97d4a8f6c8d1e569bb4ce3d399149b13dc049..fd0893d53423335a5159c850a6415e19903c089f 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; } }