<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt"><div dir="ltr"><div class="gmail_default" style><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Dec 20, 2012 at 11:47 AM, Dmitry Vyukov <span dir="ltr"><<a href="mailto:dvyukov@google.com" target="_blank">dvyukov@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dvyukov<br>
Date: Thu Dec 20 01:47:04 2012<br>
New Revision: 170679<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=170679&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=170679&view=rev</a><br>
Log:<br>
tsan: add Java interface<br>
<br>
Added:<br>
    compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h<br>
<br>
Added: compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h?rev=170679&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h?rev=170679&view=auto</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h (added)<br>
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h Thu Dec 20 01:47:04 2012<br>
@@ -0,0 +1,64 @@<br>
+//===-- tsan_interface_java.h -----------------------------------*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+//<br>
+// This file is a part of ThreadSanitizer (TSan), a race detector.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+#ifndef TSAN_INTERFACE_JAVA_H<br>
+#define TSAN_INTERFACE_JAVA_H<br>
+<br>
+#ifndef INTERFACE_ATTRIBUTE<br>
+# define INTERFACE_ATTRIBUTE __attribute__((visibility("default")))<br>
+#endif<br></blockquote><div><br></div><div style>If this header is supposed to be visible by users,</div><div style>you may want to consider moving it under //projects/compiler-rt/include/sanitizer</div><div style>and using portability macro we have there (SANITIZER_INTERFACE_ATTRIBUTE).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
+#ifdef __cplusplus<br>
+extern "C" {<br>
+#endif<br>
+<br>
+typedef unsigned long jptr;  // NOLINT<br>
+<br>
+<br>
+// Must be called before any other callback from Java.<br>
+void __tsan_java_init(jptr heap_begin, jptr heap_size) INTERFACE_ATTRIBUTE;<br>
+// Must be called when the application exits.<br>
+// Not necessary the last callback (concurrently running threads are OK).<br>
+// Returns exit status or 0 if tsan does not want to override it.<br>
+int  __tsan_java_fini() INTERFACE_ATTRIBUTE;<br>
+<br>
+// Callback for memory allocations.<br>
+// May be omitted for allocations that are not subject to data races<br>
+// nor contain synchronization objects (e.g. String).<br>
+void __tsan_java_alloc(jptr ptr, jptr size) INTERFACE_ATTRIBUTE;<br>
+// Callback for memory free.<br>
+// Can be aggregated for several objects (preferably).<br>
+void __tsan_java_free(jptr ptr, jptr size) INTERFACE_ATTRIBUTE;<br>
+// Callback for memory move by GC.<br>
+// Can be aggregated for several objects (preferably).<br>
+// The ranges must not overlap.<br>
+void __tsan_java_move(jptr src, jptr dst, jptr size) INTERFACE_ATTRIBUTE;<br>
+<br>
+// Mutex lock.<br>
+// Addr is any unique address associated with the mutex.<br>
+// Must not be called on recursive reentry.<br>
+// Object.wait() is handled as a pair of unlock/lock.<br>
+void __tsan_java_mutex_lock(jptr addr) INTERFACE_ATTRIBUTE;<br>
+// Mutex unlock.<br>
+void __tsan_java_mutex_unlock(jptr addr) INTERFACE_ATTRIBUTE;<br>
+// Mutex read lock.<br>
+void __tsan_java_mutex_read_lock(jptr addr) INTERFACE_ATTRIBUTE;<br>
+// Mutex read unlock.<br>
+void __tsan_java_mutex_read_unlock(jptr addr) INTERFACE_ATTRIBUTE;<br>
+<br>
+#ifdef __cplusplus<br>
+}  // extern "C"<br>
+#endif<br>
+<br>
+#undef INTERFACE_ATTRIBUTE<br>
+<br>
+#endif  // #ifndef TSAN_INTERFACE_JAVA_H<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><br>
</div></div></div>