wrong type of synchronization object
- at 0x........: main (annotate_hb_err.c:?)
+ at 0x........: U_AnnotateHappensBefore (unified_annotations.h:?)
+ by 0x........: main (annotate_hb_err.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (annotate_hb_err.c:?)
wrong type of synchronization object
- at 0x........: main (annotate_hb_err.c:?)
+ at 0x........: U_AnnotateHappensBefore (unified_annotations.h:?)
+ by 0x........: main (annotate_hb_err.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (annotate_hb_err.c:?)
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (annotate_hb_err.c:?)
order annotation 0x........ was first observed at:
- at 0x........: main (annotate_hb_err.c:?)
+ at 0x........: U_AnnotateHappensAfter (unified_annotations.h:?)
+ by 0x........: main (annotate_hb_err.c:?)
Done.
* http://code.google.com/p/data-race-test/source/browse/trunk/dynamic_annotations/dynamic_annotations.h
*/
#define U_ANNOTATE_NEW_MEMORY(addr, size) ANNOTATE_NEW_MEMORY(addr, size)
-#define U_ANNOTATE_HAPPENS_BEFORE(addr) \
- do { \
- ANNOTATE_HAPPENS_BEFORE(addr); \
- AnnotateCondVarSignal(__FILE__, __LINE__, addr); \
- } while(0)
-#define U_ANNOTATE_HAPPENS_AFTER(addr) \
- do { \
- ANNOTATE_HAPPENS_AFTER(addr); \
- AnnotateCondVarWait(__FILE__, __LINE__, addr, NULL); \
- } while(0)
+#define U_ANNOTATE_HAPPENS_BEFORE(addr) U_AnnotateHappensBefore(addr)
+#define U_ANNOTATE_HAPPENS_AFTER(addr) U_AnnotateHappensAfter(addr)
#define U_ANNOTATE_HAPPENS_DONE(addr) \
do { \
ANNOTATE_HAPPENS_DONE(addr); \
asm("");
}
+static __inline__ void U_AnnotateHappensBefore(void* addr)
+{
+ ANNOTATE_HAPPENS_BEFORE(addr);
+ AnnotateCondVarSignal(__FILE__, __LINE__, addr);
+}
+
+static __inline__ void U_AnnotateHappensAfter(void *addr)
+{
+ ANNOTATE_HAPPENS_AFTER(addr);
+ AnnotateCondVarWait(__FILE__, __LINE__, addr, NULL);
+}
+
#if 0
{