Index: runtime/vm/os_thread_linux.cc |
diff --git a/runtime/vm/os_thread_linux.cc b/runtime/vm/os_thread_linux.cc |
index 4a08b84d2377ef98e2670088e5d5251bac760f31..4c24cc8a780e95df7837aeb1ca3b92ed92c4848a 100644 |
--- a/runtime/vm/os_thread_linux.cc |
+++ b/runtime/vm/os_thread_linux.cc |
@@ -213,7 +213,7 @@ void OSThread::GetThreadCpuUsage(ThreadId thread_id, int64_t* cpu_usage) { |
} |
-Mutex::Mutex() { |
+Mutex::Mutex(bool recursive) { |
pthread_mutexattr_t attr; |
int result = pthread_mutexattr_init(&attr); |
VALIDATE_PTHREAD_RESULT(result); |
@@ -223,6 +223,11 @@ Mutex::Mutex() { |
VALIDATE_PTHREAD_RESULT(result); |
#endif // defined(DEBUG) |
+ if (recursive) { |
+ result = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); |
+ VALIDATE_PTHREAD_RESULT(result); |
+ } |
+ |
result = pthread_mutex_init(data_.mutex(), &attr); |
// Verify that creating a pthread_mutex succeeded. |
VALIDATE_PTHREAD_RESULT(result); |