diff --git a/ext/vernier/vernier.cc b/ext/vernier/vernier.cc index 52c1ddf..b72e95f 100644 --- a/ext/vernier/vernier.cc +++ b/ext/vernier/vernier.cc @@ -14,9 +14,13 @@ #include #include -#ifdef __APPLE__ +#if defined(__APPLE__) /* macOS */ #include +#elif defined(__FreeBSD__) +/* FreeBSD */ +#include +#include #else /* Linux */ #include @@ -786,11 +790,13 @@ class SampleTranslator { typedef uint64_t native_thread_id_t; static native_thread_id_t get_native_thread_id() { -#ifdef __APPLE__ +#if defined(__APPLE__) uint64_t thread_id; int e = pthread_threadid_np(pthread_self(), &thread_id); if (e != 0) rb_syserr_fail(e, "pthread_threadid_np"); return thread_id; +#elif defined(__FreeBSD__) + return pthread_getthreadid_np(); #else // gettid() is only available as of glibc 2.30 pid_t tid = syscall(SYS_gettid);