summaryrefslogtreecommitdiff
path: root/runtime/native/java_lang_Thread.cc
diff options
context:
space:
mode:
authorRick Yiu <rickyiu@google.com>2020-01-08 16:02:00 +0800
committerRick Yiu <rickyiu@google.com>2020-01-17 13:32:51 +0000
commite30457c0b52caba839b21a03af56200df7a975e2 (patch)
tree5f7dcb277f6c62c7dafa9f99346e4f4b80b9b466 /runtime/native/java_lang_Thread.cc
parenta72256b2b9cb32ead8bdf06c7d6546eb01ef4229 (diff)
Add getNativeTid function
Add a function to get native thread id for java Thread. Bug: 139521784 Test: CtsLibcoreTestCases, device boot to home, thread priority set as expected. Change-Id: Ic13c1380374044754f007136666dc0928ce1f143
Diffstat (limited to 'runtime/native/java_lang_Thread.cc')
-rw-r--r--runtime/native/java_lang_Thread.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/native/java_lang_Thread.cc b/runtime/native/java_lang_Thread.cc
index 37b3fe642e..5f21998998 100644
--- a/runtime/native/java_lang_Thread.cc
+++ b/runtime/native/java_lang_Thread.cc
@@ -112,6 +112,13 @@ static jint Thread_nativeGetStatus(JNIEnv* env, jobject java_thread, jboolean ha
return -1; // Unreachable.
}
+static jint Thread_getNativeTid(JNIEnv* env, jobject java_thread) {
+ ScopedFastNativeObjectAccess soa(env);
+ MutexLock mu(soa.Self(), *Locks::thread_list_lock_);
+ Thread* thread = Thread::FromManagedThread(soa, java_thread);
+ return (thread != nullptr) ? thread->GetTid() : 0;
+}
+
static jboolean Thread_holdsLock(JNIEnv* env, jclass, jobject java_object) {
ScopedObjectAccess soa(env);
ObjPtr<mirror::Object> object = soa.Decode<mirror::Object>(java_object);
@@ -198,6 +205,7 @@ static JNINativeMethod gMethods[] = {
FAST_NATIVE_METHOD(Thread, currentThread, "()Ljava/lang/Thread;"),
FAST_NATIVE_METHOD(Thread, interrupted, "()Z"),
FAST_NATIVE_METHOD(Thread, isInterrupted, "()Z"),
+ FAST_NATIVE_METHOD(Thread, getNativeTid, "()I"),
NATIVE_METHOD(Thread, nativeCreate, "(Ljava/lang/Thread;JZ)V"),
NATIVE_METHOD(Thread, nativeGetStatus, "(Z)I"),
NATIVE_METHOD(Thread, holdsLock, "(Ljava/lang/Object;)Z"),