[Lldb-commits] [lldb] r230739 - Fixes http://reviews.llvm.org/rL230691

Chaoren Lin chaorenl at google.com
Thu Feb 26 23:48:07 PST 2015


Author: chaoren
Date: Fri Feb 27 01:48:07 2015
New Revision: 230739

URL: http://llvm.org/viewvc/llvm-project?rev=230739&view=rev
Log:
Fixes http://reviews.llvm.org/rL230691

Summary: OS X doesn't implement pthread barriers, using a simple atomic flag instead.

Reviewers: ki.stfu

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D7933

Modified:
    lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp

Modified: lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp?rev=230739&r1=230738&r2=230739&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp (original)
+++ lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp Fri Feb 27 01:48:07 2015
@@ -13,12 +13,13 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <atomic>
 
 pthread_t g_thread_1 = NULL;
 pthread_t g_thread_2 = NULL;
 pthread_t g_thread_3 = NULL;
 
-pthread_barrier_t g_barrier;
+std::atomic_bool g_ready(false);
 
 char *g_char_ptr = NULL;
 
@@ -54,7 +55,7 @@ thread_func (void *arg)
     uint32_t thread_index = *((uint32_t *)arg);
     printf ("%s (thread index = %u) startng...\n", __FUNCTION__, thread_index);
 
-    pthread_barrier_wait(&g_barrier);
+    while (!g_ready);
 
     uint32_t count = 0;
     uint32_t val;
@@ -88,22 +89,18 @@ int main (int argc, char const *argv[])
     g_char_ptr = (char *)malloc (1);
     *g_char_ptr = 0;
 
-    pthread_barrier_init(&g_barrier, NULL, 4);
-
     // Create 3 threads
     err = ::pthread_create (&g_thread_1, NULL, thread_func, &thread_index_1);
     err = ::pthread_create (&g_thread_2, NULL, thread_func, &thread_index_2);
     err = ::pthread_create (&g_thread_3, NULL, thread_func, &thread_index_3);
 
     printf ("Before turning all three threads loose...\n"); // Set break point at this line.
-    pthread_barrier_wait(&g_barrier);
+    g_ready = true;
 
     // Join all of our threads
     err = ::pthread_join (g_thread_1, &thread_result);
     err = ::pthread_join (g_thread_2, &thread_result);
     err = ::pthread_join (g_thread_3, &thread_result);
-
-    pthread_barrier_destroy(&g_barrier);
     free(g_char_ptr);
 
     return 0;





More information about the lldb-commits mailing list