From 308e98045a9351d23b0668fcaefd7f0a2d33900c Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 3 Dec 2020 15:42:02 -0800 Subject: Use C++ thread_local rather than libcutils. Test: treehugger Change-Id: I11114b8e591e7ec034bac6420b1a0adda88e8af2 --- libs/binder/BufferedTextOutput.cpp | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) (limited to 'libs/binder/BufferedTextOutput.cpp') diff --git a/libs/binder/BufferedTextOutput.cpp b/libs/binder/BufferedTextOutput.cpp index 8cf6097759..88c85bfadc 100644 --- a/libs/binder/BufferedTextOutput.cpp +++ b/libs/binder/BufferedTextOutput.cpp @@ -18,7 +18,6 @@ #include #include -#include #include #include #include @@ -91,22 +90,6 @@ struct BufferedTextOutput::ThreadState static pthread_mutex_t gMutex = PTHREAD_MUTEX_INITIALIZER; -static thread_store_t tls; - -BufferedTextOutput::ThreadState* BufferedTextOutput::getThreadState() -{ - ThreadState* ts = (ThreadState*) thread_store_get( &tls ); - if (ts) return ts; - ts = new ThreadState; - thread_store_set( &tls, ts, threadDestructor ); - return ts; -} - -void BufferedTextOutput::threadDestructor(void *st) -{ - delete ((ThreadState*)st); -} - static volatile int32_t gSequence = 0; static volatile int32_t gFreeBufferIndex = -1; @@ -266,16 +249,14 @@ void BufferedTextOutput::popBundle() BufferedTextOutput::BufferState* BufferedTextOutput::getBuffer() const { if ((mFlags&MULTITHREADED) != 0) { - ThreadState* ts = getThreadState(); - if (ts) { - while (ts->states.size() <= (size_t)mIndex) ts->states.add(nullptr); - BufferState* bs = ts->states[mIndex].get(); - if (bs != nullptr && bs->seq == mSeq) return bs; - - ts->states.editItemAt(mIndex) = new BufferState(mIndex); - bs = ts->states[mIndex].get(); - if (bs != nullptr) return bs; - } + thread_local ThreadState ts; + while (ts.states.size() <= (size_t)mIndex) ts.states.add(nullptr); + BufferState* bs = ts.states[mIndex].get(); + if (bs != nullptr && bs->seq == mSeq) return bs; + + ts.states.editItemAt(mIndex) = new BufferState(mIndex); + bs = ts.states[mIndex].get(); + if (bs != nullptr) return bs; } return mGlobalState; -- cgit v1.2.3-59-g8ed1b