Files
openGauss-server/src/include/tsan_annotation.h
dengxuyue 1567043064 同步source code
日期: 12-26
    revision: ee5b054c
2020-12-28 22:19:21 +08:00

39 lines
1.9 KiB
C

#ifndef TSAN_ANNOTATION_H
#define TSAN_ANNOTATION_H
#ifdef ENABLE_THREAD_CHECK
extern "C" {
void AnnotateHappensBefore(const char *f, int l, uintptr_t addr);
void AnnotateHappensAfter(const char *f, int l, uintptr_t addr);
void AnnotateRWLockCreate(char *f, int l, uintptr_t m);
void AnnotateRWLockDestroy(char *f, int l, uintptr_t m);
void AnnotateRWLockAcquired(char *f, int l, uintptr_t m, uintptr_t is_w);
void AnnotateRWLockReleased(char *f, int l, uintptr_t m, uintptr_t is_w);
void AnnotateBenignRaceSized(char *f, int l, uintptr_t m, uintptr_t size, char *desc);
void AnnotateReadBarrier();
void AnnotateWriteBarrier();
}
#define TsAnnotateHappensBefore(addr) AnnotateHappensBefore(__FILE__, __LINE__, (uintptr_t)addr)
#define TsAnnotateHappensAfter(addr) AnnotateHappensAfter(__FILE__, __LINE__, (uintptr_t)addr)
#define TsAnnotateRWLockCreate(m) AnnotateRWLockCreate(__FILE__, __LINE__, (uintptr_t)m)
#define TsAnnotateRWLockDestroy(m) AnnotateRWLockDestroy(__FILE__, __LINE__, (uintptr_t)m)
#define TsAnnotateRWLockAcquired(m, is_w) AnnotateRWLockAcquired(__FILE__, __LINE__, (uintptr_t)m, is_w)
#define TsAnnotateRWLockReleased(m, is_w) AnnotateRWLockReleased(__FILE__, __LINE__, (uintptr_t)m, is_w)
#define TsAnnotateBenignRaceSized(m, size) AnnotateBenignRaceSized(__FILE__, __LINE__, (uintptr_t)m, size, NULL)
#define TsAnnotateWriteBarrier() AnnotateWriteBarrier()
#define TsAnnotateReadBarrier() AnnotateReadBarrier()
#else
#define TsAnnotateHappensBefore(addr)
#define TsAnnotateHappensAfter(addr)
#define TsAnnotateRWLockCreate(m)
#define TsAnnotateRWLockDestroy(m)
#define TsAnnotateRWLockAcquired(m, is_w)
#define TsAnnotateRWLockReleased(m, is_w)
#define TsAnnotateBenignRaceSized(m, size)
#define TsAnnotateWriteBarrier()
#define TsAnnotateReadBarrier()
#endif /* endif ENABLE_THREAD_CHECK */
#endif // TSAN_ANNOTATION_H