Loading base/include/android-base/threads.h +5 −0 Original line number Diff line number Diff line Loading @@ -23,3 +23,8 @@ namespace base { uint64_t GetThreadId(); } } // namespace android #if defined(__GLIBC__) // bionic has this Linux-specifix call, but glibc doesn't. extern "C" int tgkill(int tgid, int tid, int sig); #endif base/threads.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,9 @@ uint64_t GetThreadId() { } // namespace base } // namespace android #if defined(__GLIBC__) int tgkill(int tgid, int tid, int sig) { return syscall(__NR_tgkill, tgid, tid, sig); } #endif libbacktrace/Android.bp +0 −4 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ libbacktrace_sources = [ "Backtrace.cpp", "BacktraceCurrent.cpp", "BacktracePtrace.cpp", "thread_utils.c", "ThreadEntry.cpp", "UnwindStack.cpp", "UnwindStackMap.cpp", Loading Loading @@ -94,7 +93,6 @@ cc_library { ], static_libs: [ "libcutils", "libprocinfo", ], Loading Loading @@ -145,7 +143,6 @@ cc_test { "backtrace_offline_test.cpp", "backtrace_test.cpp", "GetPss.cpp", "thread_utils.c", ], cflags: [ Loading @@ -159,7 +156,6 @@ cc_test { "libbacktrace", "libdexfile", "libbase", "libcutils", "liblog", "libunwindstack", ], Loading libbacktrace/Backtrace.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <string> #include <android-base/stringprintf.h> #include <android-base/threads.h> #include <backtrace/Backtrace.h> #include <backtrace/BacktraceMap.h> Loading @@ -31,7 +32,6 @@ #include "BacktraceLog.h" #include "UnwindStack.h" #include "thread_utils.h" using android::base::StringPrintf; Loading Loading @@ -124,7 +124,7 @@ Backtrace* Backtrace::Create(pid_t pid, pid_t tid, BacktraceMap* map) { if (pid == BACKTRACE_CURRENT_PROCESS) { pid = getpid(); if (tid == BACKTRACE_CURRENT_THREAD) { tid = gettid(); tid = android::base::GetThreadId(); } } else if (tid == BACKTRACE_CURRENT_THREAD) { tid = pid; Loading libbacktrace/BacktraceCurrent.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -28,13 +28,13 @@ #include <string> #include <android-base/threads.h> #include <backtrace/Backtrace.h> #include <backtrace/BacktraceMap.h> #include "BacktraceAsyncSafeLog.h" #include "BacktraceCurrent.h" #include "ThreadEntry.h" #include "thread_utils.h" bool BacktraceCurrent::ReadWord(uint64_t ptr, word_t* out_value) { if (!VerifyReadWordArgs(ptr, out_value)) { Loading Loading @@ -76,7 +76,7 @@ bool BacktraceCurrent::Unwind(size_t num_ignore_frames, void* ucontext) { return UnwindFromContext(num_ignore_frames, ucontext); } if (Tid() != gettid()) { if (Tid() != android::base::GetThreadId()) { return UnwindThread(num_ignore_frames); } Loading Loading @@ -114,16 +114,17 @@ class ErrnoRestorer { static void SignalLogOnly(int, siginfo_t*, void*) { ErrnoRestorer restore; BACK_ASYNC_SAFE_LOGE("pid %d, tid %d: Received a spurious signal %d\n", getpid(), gettid(), THREAD_SIGNAL); BACK_ASYNC_SAFE_LOGE("pid %d, tid %d: Received a spurious signal %d\n", getpid(), static_cast<int>(android::base::GetThreadId()), THREAD_SIGNAL); } static void SignalHandler(int, siginfo_t*, void* sigcontext) { ErrnoRestorer restore; ThreadEntry* entry = ThreadEntry::Get(getpid(), gettid(), false); ThreadEntry* entry = ThreadEntry::Get(getpid(), android::base::GetThreadId(), false); if (!entry) { BACK_ASYNC_SAFE_LOGE("pid %d, tid %d entry not found", getpid(), gettid()); BACK_ASYNC_SAFE_LOGE("pid %d, tid %d entry not found", getpid(), static_cast<int>(android::base::GetThreadId())); return; } Loading Loading
base/include/android-base/threads.h +5 −0 Original line number Diff line number Diff line Loading @@ -23,3 +23,8 @@ namespace base { uint64_t GetThreadId(); } } // namespace android #if defined(__GLIBC__) // bionic has this Linux-specifix call, but glibc doesn't. extern "C" int tgkill(int tgid, int tid, int sig); #endif
base/threads.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,9 @@ uint64_t GetThreadId() { } // namespace base } // namespace android #if defined(__GLIBC__) int tgkill(int tgid, int tid, int sig) { return syscall(__NR_tgkill, tgid, tid, sig); } #endif
libbacktrace/Android.bp +0 −4 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ libbacktrace_sources = [ "Backtrace.cpp", "BacktraceCurrent.cpp", "BacktracePtrace.cpp", "thread_utils.c", "ThreadEntry.cpp", "UnwindStack.cpp", "UnwindStackMap.cpp", Loading Loading @@ -94,7 +93,6 @@ cc_library { ], static_libs: [ "libcutils", "libprocinfo", ], Loading Loading @@ -145,7 +143,6 @@ cc_test { "backtrace_offline_test.cpp", "backtrace_test.cpp", "GetPss.cpp", "thread_utils.c", ], cflags: [ Loading @@ -159,7 +156,6 @@ cc_test { "libbacktrace", "libdexfile", "libbase", "libcutils", "liblog", "libunwindstack", ], Loading
libbacktrace/Backtrace.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <string> #include <android-base/stringprintf.h> #include <android-base/threads.h> #include <backtrace/Backtrace.h> #include <backtrace/BacktraceMap.h> Loading @@ -31,7 +32,6 @@ #include "BacktraceLog.h" #include "UnwindStack.h" #include "thread_utils.h" using android::base::StringPrintf; Loading Loading @@ -124,7 +124,7 @@ Backtrace* Backtrace::Create(pid_t pid, pid_t tid, BacktraceMap* map) { if (pid == BACKTRACE_CURRENT_PROCESS) { pid = getpid(); if (tid == BACKTRACE_CURRENT_THREAD) { tid = gettid(); tid = android::base::GetThreadId(); } } else if (tid == BACKTRACE_CURRENT_THREAD) { tid = pid; Loading
libbacktrace/BacktraceCurrent.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -28,13 +28,13 @@ #include <string> #include <android-base/threads.h> #include <backtrace/Backtrace.h> #include <backtrace/BacktraceMap.h> #include "BacktraceAsyncSafeLog.h" #include "BacktraceCurrent.h" #include "ThreadEntry.h" #include "thread_utils.h" bool BacktraceCurrent::ReadWord(uint64_t ptr, word_t* out_value) { if (!VerifyReadWordArgs(ptr, out_value)) { Loading Loading @@ -76,7 +76,7 @@ bool BacktraceCurrent::Unwind(size_t num_ignore_frames, void* ucontext) { return UnwindFromContext(num_ignore_frames, ucontext); } if (Tid() != gettid()) { if (Tid() != android::base::GetThreadId()) { return UnwindThread(num_ignore_frames); } Loading Loading @@ -114,16 +114,17 @@ class ErrnoRestorer { static void SignalLogOnly(int, siginfo_t*, void*) { ErrnoRestorer restore; BACK_ASYNC_SAFE_LOGE("pid %d, tid %d: Received a spurious signal %d\n", getpid(), gettid(), THREAD_SIGNAL); BACK_ASYNC_SAFE_LOGE("pid %d, tid %d: Received a spurious signal %d\n", getpid(), static_cast<int>(android::base::GetThreadId()), THREAD_SIGNAL); } static void SignalHandler(int, siginfo_t*, void* sigcontext) { ErrnoRestorer restore; ThreadEntry* entry = ThreadEntry::Get(getpid(), gettid(), false); ThreadEntry* entry = ThreadEntry::Get(getpid(), android::base::GetThreadId(), false); if (!entry) { BACK_ASYNC_SAFE_LOGE("pid %d, tid %d entry not found", getpid(), gettid()); BACK_ASYNC_SAFE_LOGE("pid %d, tid %d entry not found", getpid(), static_cast<int>(android::base::GetThreadId())); return; } Loading