Fix mac build breaks
Former-commit-id: 16a89f21dc0beb23b7eb8f2e378d076da918c0d6
This commit is contained in:
parent
9252500928
commit
15d37f3d65
@ -140,6 +140,7 @@ else
|
|||||||
# All the other OSes (notably Linux)
|
# All the other OSes (notably Linux)
|
||||||
FINAL_LDFLAGS+= -rdynamic
|
FINAL_LDFLAGS+= -rdynamic
|
||||||
FINAL_LIBS+=-ldl -pthread -lrt -luuid
|
FINAL_LIBS+=-ldl -pthread -lrt -luuid
|
||||||
|
FINAL_CFLAGS += -DMOTD
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -36,7 +36,9 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#ifdef __linux__
|
||||||
#include <linux/futex.h>
|
#include <linux/futex.h>
|
||||||
|
#endif
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
@ -67,6 +69,7 @@ uint64_t fastlock_getlongwaitcount()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ASM_SPINLOCK
|
#ifndef ASM_SPINLOCK
|
||||||
|
#ifdef __linux__
|
||||||
static int futex(volatile unsigned *uaddr, int futex_op, int val,
|
static int futex(volatile unsigned *uaddr, int futex_op, int val,
|
||||||
const struct timespec *timeout, int val3)
|
const struct timespec *timeout, int val3)
|
||||||
{
|
{
|
||||||
@ -74,6 +77,7 @@ static int futex(volatile unsigned *uaddr, int futex_op, int val,
|
|||||||
timeout, uaddr, val3);
|
timeout, uaddr, val3);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
extern "C" pid_t gettid()
|
extern "C" pid_t gettid()
|
||||||
{
|
{
|
||||||
@ -121,9 +125,11 @@ extern "C" void fastlock_lock(struct fastlock *lock)
|
|||||||
#endif
|
#endif
|
||||||
if ((++cloops % 1024*1024) == 0)
|
if ((++cloops % 1024*1024) == 0)
|
||||||
{
|
{
|
||||||
|
#ifdef __linux__
|
||||||
__atomic_fetch_or(&lock->futex, mask, __ATOMIC_ACQUIRE);
|
__atomic_fetch_or(&lock->futex, mask, __ATOMIC_ACQUIRE);
|
||||||
futex(&lock->m_ticket.u, FUTEX_WAIT_BITSET_PRIVATE, ticketT.u, nullptr, mask);
|
futex(&lock->m_ticket.u, FUTEX_WAIT_BITSET_PRIVATE, ticketT.u, nullptr, mask);
|
||||||
__atomic_fetch_and(&lock->futex, ~mask, __ATOMIC_RELEASE);
|
__atomic_fetch_and(&lock->futex, ~mask, __ATOMIC_RELEASE);
|
||||||
|
#endif
|
||||||
++g_longwaits;
|
++g_longwaits;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,6 +165,7 @@ extern "C" int fastlock_trylock(struct fastlock *lock, int fWeak)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
#define ROL32(v, shift) ((v << shift) | (v >> (32-shift)))
|
#define ROL32(v, shift) ((v << shift) | (v >> (32-shift)))
|
||||||
void unlock_futex(struct fastlock *lock, uint16_t ifutex)
|
void unlock_futex(struct fastlock *lock, uint16_t ifutex)
|
||||||
{
|
{
|
||||||
@ -174,6 +181,8 @@ void unlock_futex(struct fastlock *lock, uint16_t ifutex)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
extern "C" void fastlock_unlock(struct fastlock *lock)
|
extern "C" void fastlock_unlock(struct fastlock *lock)
|
||||||
{
|
{
|
||||||
--lock->m_depth;
|
--lock->m_depth;
|
||||||
@ -183,7 +192,9 @@ extern "C" void fastlock_unlock(struct fastlock *lock)
|
|||||||
lock->m_pidOwner = -1;
|
lock->m_pidOwner = -1;
|
||||||
std::atomic_thread_fence(std::memory_order_release);
|
std::atomic_thread_fence(std::memory_order_release);
|
||||||
uint16_t activeNew = __atomic_add_fetch(&lock->m_ticket.m_active, 1, __ATOMIC_RELEASE); // on x86 the atomic is not required here, but ASM handles that case
|
uint16_t activeNew = __atomic_add_fetch(&lock->m_ticket.m_active, 1, __ATOMIC_RELEASE); // on x86 the atomic is not required here, but ASM handles that case
|
||||||
|
#ifdef __linux__
|
||||||
unlock_futex(lock, activeNew);
|
unlock_futex(lock, activeNew);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -6537,7 +6537,7 @@ static void intrinsicLatencyMode(void) {
|
|||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Message of the day
|
* Message of the day
|
||||||
*--------------------------------------------------------------------------- */
|
*--------------------------------------------------------------------------- */
|
||||||
#ifndef NO_MOTD
|
#ifdef MOTD
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
static const char *szMotdCachePath()
|
static const char *szMotdCachePath()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user