Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f8093f8 authored by Dan Albert's avatar Dan Albert Committed by Gerrit Code Review
Browse files

Merge "Move gettid() into libcutils."

parents a5e9639c 7dfb61dc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ LOCAL_SRC_FILES := $(libbase_src_files)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CPPFLAGS := $(libbase_cppflags)
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES := libcutils
LOCAL_MULTILIB := both
include $(BUILD_STATIC_LIBRARY)

@@ -53,6 +54,7 @@ LOCAL_CLANG := true
LOCAL_WHOLE_STATIC_LIBRARIES := libbase
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_SHARED_LIBRARIES := libcutils
LOCAL_MULTILIB := both
include $(BUILD_SHARED_LIBRARY)

@@ -64,6 +66,7 @@ LOCAL_SRC_FILES := $(libbase_src_files)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CPPFLAGS := $(libbase_cppflags)
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES := libcutils
LOCAL_MULTILIB := both
include $(BUILD_HOST_STATIC_LIBRARY)

@@ -72,6 +75,7 @@ LOCAL_MODULE := libbase
LOCAL_WHOLE_STATIC_LIBRARIES := libbase
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES := libcutils
LOCAL_MULTILIB := both
include $(BUILD_HOST_SHARED_LIBRARY)

+2 −23
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <vector>

#include "base/strings.h"
#include "cutils/threads.h"

// Headers for LogMessage::LogLine.
#ifdef __ANDROID__
@@ -33,15 +34,6 @@
#include <unistd.h>
#endif

// For GetTid.
#if defined(__APPLE__)
#include "AvailabilityMacros.h"  // For MAC_OS_X_VERSION_MAX_ALLOWED
#include <sys/syscall.h>
#include <sys/time.h>
#elif !defined(__BIONIC__)
#include <syscall.h>
#endif

namespace android {
namespace base {

@@ -52,19 +44,6 @@ static std::unique_ptr<std::string> gCmdLine;
static std::unique_ptr<std::string> gProgramInvocationName;
static std::unique_ptr<std::string> gProgramInvocationShortName;

#ifndef __ANDROID__
static pid_t GetTid() {
#if defined(__APPLE__)
  uint64_t owner;
  // Requires Mac OS 10.6
  CHECK_PTHREAD_CALL(pthread_threadid_np, (NULL, &owner), __FUNCTION__);
  return owner;
#else
  return syscall(__NR_gettid);
#endif
}
#endif  // __ANDROID__

const char* GetCmdLine() {
  return (gCmdLine.get() != nullptr) ? gCmdLine->c_str() : nullptr;
}
@@ -261,7 +240,7 @@ void LogMessage::LogLine(const char* file, unsigned int line,
  CHECK_EQ(strlen(log_characters), FATAL + 1U);
  char severity = log_characters[log_severity];
  fprintf(stderr, "%s %c %5d %5d %s:%u] %s\n", ProgramInvocationShortName(),
          severity, getpid(), GetTid(), file, line, message);
          severity, getpid(), gettid(), file, line, message);
#endif
}

+2 −2
Original line number Diff line number Diff line
@@ -37,9 +37,10 @@ typedef struct {
    pthread_mutex_t   lock;
    int               has_tls;
    pthread_key_t     tls;

} thread_store_t;

extern pid_t gettid();

#define  THREAD_STORE_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, 0, 0 }

#else // !defined(_WIN32)
@@ -51,7 +52,6 @@ typedef struct {
    int               has_tls;
    DWORD             tls;
    CRITICAL_SECTION  lock;

} thread_store_t;

#define  THREAD_STORE_INITIALIZER  { 0, 0, 0, {0, 0, 0, 0, 0, 0} }
+30 −1
Original line number Diff line number Diff line
@@ -14,9 +14,23 @@
** limitations under the License.
*/

#include <cutils/threads.h>
#include "cutils/threads.h"

#if !defined(_WIN32)

// For gettid.
#if defined(__APPLE__)
#include "AvailabilityMacros.h"  // For MAC_OS_X_VERSION_MAX_ALLOWED
#include <sys/syscall.h>
#include <sys/time.h>
#include "base/logging.h"
#elif defined(__linux__) && !defined(__ANDROID__)
#include <syscall.h>
#include <unistd.h>
#elif defined(_WIN32)
#include <Windows.h>
#endif

void*  thread_store_get( thread_store_t*  store )
{
    if (!store->has_tls)
@@ -42,6 +56,21 @@ extern void thread_store_set( thread_store_t* store,
    pthread_setspecific( store->tls, value );
}

// No definition needed for Android because we'll just pick up bionic's copy.
#ifndef __ANDROID__
pid_t gettid() {
#if defined(__APPLE__)
  uint64_t owner;
  CHECK_PTHREAD_CALL(pthread_threadid_np, (NULL, &owner), __FUNCTION__);
  return owner;
#elif defined(__linux__)
  return syscall(__NR_gettid);
#elif defined(_WIN32)
  return (pid_t)GetCurrentThreadId();
#endif
}
#endif  // __ANDROID__

#else /* !defined(_WIN32) */
void*  thread_store_get( thread_store_t*  store )
{