xref: /openbsd-src/gnu/llvm/compiler-rt/lib/tsan/tests/rtl/tsan_posix_util.h (revision 3cab2bb3f667058bece8e38b12449a63a9d73c4b)
1*3cab2bb3Spatrick //===-- tsan_posix_util.h ---------------------------------------*- C++ -*-===//
2*3cab2bb3Spatrick //
3*3cab2bb3Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*3cab2bb3Spatrick // See https://llvm.org/LICENSE.txt for license information.
5*3cab2bb3Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*3cab2bb3Spatrick //
7*3cab2bb3Spatrick //===----------------------------------------------------------------------===//
8*3cab2bb3Spatrick //
9*3cab2bb3Spatrick // This file is a part of ThreadSanitizer (TSan), a race detector.
10*3cab2bb3Spatrick //
11*3cab2bb3Spatrick // Test POSIX utils.
12*3cab2bb3Spatrick //===----------------------------------------------------------------------===//
13*3cab2bb3Spatrick #ifndef TSAN_POSIX_UTIL_H
14*3cab2bb3Spatrick #define TSAN_POSIX_UTIL_H
15*3cab2bb3Spatrick 
16*3cab2bb3Spatrick #include <pthread.h>
17*3cab2bb3Spatrick 
18*3cab2bb3Spatrick #ifdef __APPLE__
19*3cab2bb3Spatrick #define __interceptor_memcpy wrap_memcpy
20*3cab2bb3Spatrick #define __interceptor_memset wrap_memset
21*3cab2bb3Spatrick #define __interceptor_pthread_create wrap_pthread_create
22*3cab2bb3Spatrick #define __interceptor_pthread_join wrap_pthread_join
23*3cab2bb3Spatrick #define __interceptor_pthread_detach wrap_pthread_detach
24*3cab2bb3Spatrick #define __interceptor_pthread_mutex_init wrap_pthread_mutex_init
25*3cab2bb3Spatrick #define __interceptor_pthread_mutex_lock wrap_pthread_mutex_lock
26*3cab2bb3Spatrick #define __interceptor_pthread_mutex_unlock wrap_pthread_mutex_unlock
27*3cab2bb3Spatrick #define __interceptor_pthread_mutex_destroy wrap_pthread_mutex_destroy
28*3cab2bb3Spatrick #define __interceptor_pthread_mutex_trylock wrap_pthread_mutex_trylock
29*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_init wrap_pthread_rwlock_init
30*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_destroy wrap_pthread_rwlock_destroy
31*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_trywrlock wrap_pthread_rwlock_trywrlock
32*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_wrlock wrap_pthread_rwlock_wrlock
33*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_unlock wrap_pthread_rwlock_unlock
34*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_rdlock wrap_pthread_rwlock_rdlock
35*3cab2bb3Spatrick #define __interceptor_pthread_rwlock_tryrdlock wrap_pthread_rwlock_tryrdlock
36*3cab2bb3Spatrick #define __interceptor_pthread_cond_init wrap_pthread_cond_init
37*3cab2bb3Spatrick #define __interceptor_pthread_cond_signal wrap_pthread_cond_signal
38*3cab2bb3Spatrick #define __interceptor_pthread_cond_broadcast wrap_pthread_cond_broadcast
39*3cab2bb3Spatrick #define __interceptor_pthread_cond_wait wrap_pthread_cond_wait
40*3cab2bb3Spatrick #define __interceptor_pthread_cond_destroy wrap_pthread_cond_destroy
41*3cab2bb3Spatrick #endif
42*3cab2bb3Spatrick 
43*3cab2bb3Spatrick extern "C" void *__interceptor_memcpy(void *, const void *, uptr);
44*3cab2bb3Spatrick extern "C" void *__interceptor_memset(void *, int, uptr);
45*3cab2bb3Spatrick extern "C" int __interceptor_pthread_create(pthread_t *thread,
46*3cab2bb3Spatrick                                             const pthread_attr_t *attr,
47*3cab2bb3Spatrick                                             void *(*start_routine)(void *),
48*3cab2bb3Spatrick                                             void *arg);
49*3cab2bb3Spatrick extern "C" int __interceptor_pthread_join(pthread_t thread, void **value_ptr);
50*3cab2bb3Spatrick extern "C" int __interceptor_pthread_detach(pthread_t thread);
51*3cab2bb3Spatrick 
52*3cab2bb3Spatrick extern "C" int __interceptor_pthread_mutex_init(
53*3cab2bb3Spatrick     pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
54*3cab2bb3Spatrick extern "C" int __interceptor_pthread_mutex_lock(pthread_mutex_t *mutex);
55*3cab2bb3Spatrick extern "C" int __interceptor_pthread_mutex_unlock(pthread_mutex_t *mutex);
56*3cab2bb3Spatrick extern "C" int __interceptor_pthread_mutex_destroy(pthread_mutex_t *mutex);
57*3cab2bb3Spatrick extern "C" int __interceptor_pthread_mutex_trylock(pthread_mutex_t *mutex);
58*3cab2bb3Spatrick 
59*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_init(
60*3cab2bb3Spatrick     pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr);
61*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_destroy(pthread_rwlock_t *rwlock);
62*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);
63*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
64*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_unlock(pthread_rwlock_t *rwlock);
65*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
66*3cab2bb3Spatrick extern "C" int __interceptor_pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);
67*3cab2bb3Spatrick 
68*3cab2bb3Spatrick extern "C" int __interceptor_pthread_cond_init(pthread_cond_t *cond,
69*3cab2bb3Spatrick                                                const pthread_condattr_t *attr);
70*3cab2bb3Spatrick extern "C" int __interceptor_pthread_cond_signal(pthread_cond_t *cond);
71*3cab2bb3Spatrick extern "C" int __interceptor_pthread_cond_broadcast(pthread_cond_t *cond);
72*3cab2bb3Spatrick extern "C" int __interceptor_pthread_cond_wait(pthread_cond_t *cond,
73*3cab2bb3Spatrick                                                pthread_mutex_t *mutex);
74*3cab2bb3Spatrick extern "C" int __interceptor_pthread_cond_destroy(pthread_cond_t *cond);
75*3cab2bb3Spatrick 
76*3cab2bb3Spatrick #endif  // #ifndef TSAN_POSIX_UTIL_H
77