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
diff --git a/runtime/native/java_lang_Thread.cc b/runtime/native/java_lang_Thread.cc
index 37b3fe6..5f21998 100644
--- a/runtime/native/java_lang_Thread.cc
+++ b/runtime/native/java_lang_Thread.cc
@@ -112,6 +112,13 @@
   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 @@
   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"),