[llvm-commits] [compiler-rt] r170679 - /compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h

Alexey Samsonov samsonov at google.com
Thu Dec 20 11:26:07 PST 2012


On Thu, Dec 20, 2012 at 11:47 AM, Dmitry Vyukov <dvyukov at google.com> wrote:

> Author: dvyukov
> Date: Thu Dec 20 01:47:04 2012
> New Revision: 170679
>
> URL: http://llvm.org/viewvc/llvm-project?rev=170679&view=rev
> Log:
> tsan: add Java interface
>
> Added:
>     compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h
>
> Added: compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h?rev=170679&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h (added)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_interface_java.h Thu Dec 20
> 01:47:04 2012
> @@ -0,0 +1,64 @@
> +//===-- tsan_interface_java.h -----------------------------------*- C++
> -*-===//
> +//
> +//                     The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +//
> +// This file is a part of ThreadSanitizer (TSan), a race detector.
> +//
>
> +//===----------------------------------------------------------------------===//
> +#ifndef TSAN_INTERFACE_JAVA_H
> +#define TSAN_INTERFACE_JAVA_H
> +
> +#ifndef INTERFACE_ATTRIBUTE
> +# define INTERFACE_ATTRIBUTE __attribute__((visibility("default")))
> +#endif
>

If this header is supposed to be visible by users,
you may want to consider moving it
under //projects/compiler-rt/include/sanitizer
and using portability macro we have there (SANITIZER_INTERFACE_ATTRIBUTE).


> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +typedef unsigned long jptr;  // NOLINT
> +
> +
> +// Must be called before any other callback from Java.
> +void __tsan_java_init(jptr heap_begin, jptr heap_size)
> INTERFACE_ATTRIBUTE;
> +// Must be called when the application exits.
> +// Not necessary the last callback (concurrently running threads are OK).
> +// Returns exit status or 0 if tsan does not want to override it.
> +int  __tsan_java_fini() INTERFACE_ATTRIBUTE;
> +
> +// Callback for memory allocations.
> +// May be omitted for allocations that are not subject to data races
> +// nor contain synchronization objects (e.g. String).
> +void __tsan_java_alloc(jptr ptr, jptr size) INTERFACE_ATTRIBUTE;
> +// Callback for memory free.
> +// Can be aggregated for several objects (preferably).
> +void __tsan_java_free(jptr ptr, jptr size) INTERFACE_ATTRIBUTE;
> +// Callback for memory move by GC.
> +// Can be aggregated for several objects (preferably).
> +// The ranges must not overlap.
> +void __tsan_java_move(jptr src, jptr dst, jptr size) INTERFACE_ATTRIBUTE;
> +
> +// Mutex lock.
> +// Addr is any unique address associated with the mutex.
> +// Must not be called on recursive reentry.
> +// Object.wait() is handled as a pair of unlock/lock.
> +void __tsan_java_mutex_lock(jptr addr) INTERFACE_ATTRIBUTE;
> +// Mutex unlock.
> +void __tsan_java_mutex_unlock(jptr addr) INTERFACE_ATTRIBUTE;
> +// Mutex read lock.
> +void __tsan_java_mutex_read_lock(jptr addr) INTERFACE_ATTRIBUTE;
> +// Mutex read unlock.
> +void __tsan_java_mutex_read_unlock(jptr addr) INTERFACE_ATTRIBUTE;
> +
> +#ifdef __cplusplus
> +}  // extern "C"
> +#endif
> +
> +#undef INTERFACE_ATTRIBUTE
> +
> +#endif  // #ifndef TSAN_INTERFACE_JAVA_H
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121220/f8c2061d/attachment.html>


More information about the llvm-commits mailing list