summaryrefslogtreecommitdiffstats
path: root/vm/Thread.cpp
diff options
context:
space:
mode:
authorRaghu Gandham <raghu@mips.com>2012-05-02 14:27:16 -0700
committerRaghu Gandham <raghu@mips.com>2012-05-02 14:27:16 -0700
commita8b91c52fd8a90b784835dfe1f8898035266c4dd (patch)
tree8a9bb58ee3b78c10cf88a3bac21b7f96d75cd1f7 /vm/Thread.cpp
parenta14639df65cc0aefafcddda5aae8b591204e45f9 (diff)
downloadandroid_dalvik-a8b91c52fd8a90b784835dfe1f8898035266c4dd.tar.gz
android_dalvik-a8b91c52fd8a90b784835dfe1f8898035266c4dd.tar.bz2
android_dalvik-a8b91c52fd8a90b784835dfe1f8898035266c4dd.zip
[MIPS] Dalvik fast interpreter support and JIT implementation
Change-Id: I9bb4f6875b7061d3ffaee73f204026cb8ba3ed39 Signed-off-by: Raghu Gandham <raghu@mips.com> Signed-off-by: Chris Dearman <chris@mips.com> Signed-off-by: Douglas Leung <douglas@mips.com> Signed-off-by: Don Padgett <don@mips.com>
Diffstat (limited to 'vm/Thread.cpp')
-rw-r--r--vm/Thread.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/vm/Thread.cpp b/vm/Thread.cpp
index 8e879e084..28182d6f2 100644
--- a/vm/Thread.cpp
+++ b/vm/Thread.cpp
@@ -3434,15 +3434,26 @@ void dvmNukeThread(Thread* thread)
* The target thread can continue to execute between the two signals.
* (The first just causes debuggerd to attach to it.)
*/
- LOGD("threadid=%d: sending two SIGSTKFLTs to threadid=%d (tid=%d) to"
+
+#ifdef SIGSTKFLT
+#define SIG SIGSTKFLT
+#define SIGNAME "SIGSTKFLT"
+#elif defined(SIGEMT)
+#define SIG SIGEMT
+#define SIGNAME "SIGEMT"
+#else
+#error No signal available for dvmNukeThread
+#endif
+
+ LOGD("threadid=%d: sending two " SIGNAME "s to threadid=%d (tid=%d) to"
" cause debuggerd dump",
dvmThreadSelf()->threadId, thread->threadId, thread->systemTid);
- killResult = pthread_kill(thread->handle, SIGSTKFLT);
+ killResult = pthread_kill(thread->handle, SIG);
if (killResult != 0) {
LOGD("NOTE: pthread_kill #1 failed: %s", strerror(killResult));
}
usleep(2 * 1000 * 1000); // TODO: timed-wait until debuggerd attaches
- killResult = pthread_kill(thread->handle, SIGSTKFLT);
+ killResult = pthread_kill(thread->handle, SIG);
if (killResult != 0) {
LOGD("NOTE: pthread_kill #2 failed: %s", strerror(killResult));
}