diff --git a/include/rocksdb/perf_context.h b/include/rocksdb/perf_context.h index 80598bb2f3cd0bdf572cc15f3654e1b8c0a89d35..76a5cac680219b098e3706c67f0e08c152197aa4 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 69b33fca40aa093c2f23d6b7b0146a913933c543..2f876f7f17114d98b78a3a38408baf9fc9d87df7 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 + }