diff --git a/include/rocksdb/perf_context.h b/include/rocksdb/perf_context.h index 80598bb2f..76a5cac68 100644 --- a/include/rocksdb/perf_context.h +++ b/include/rocksdb/perf_context.h @@ -155,7 +155,12 @@ extern PerfContext perf_context; #elif defined(_MSC_VER) extern __declspec(thread) PerfContext perf_context; #else -extern __thread PerfContext perf_context; + #if defined(OS_SOLARIS) + PerfContext *getPerfContext(); + #define perf_context (*getPerfContext()) + #else + extern __thread PerfContext perf_context; + #endif #endif } diff --git a/monitoring/perf_context.cc b/monitoring/perf_context.cc index 69b33fca4..2f876f7f1 100644 --- a/monitoring/perf_context.cc +++ b/monitoring/perf_context.cc @@ -14,7 +14,11 @@ namespace rocksdb { #elif defined(_MSC_VER) __declspec(thread) PerfContext perf_context; #else - __thread PerfContext perf_context; + #if defined(OS_SOLARIS) + __thread PerfContext perf_context_; + #else + __thread PerfContext perf_context; + #endif #endif void PerfContext::Reset() { @@ -162,4 +166,10 @@ std::string PerfContext::ToString(bool exclude_zero_counters) const { #endif } +#if defined(OS_SOLARIS) +PerfContext *getPerfContext() { + return &perf_context_; +} +#endif + }