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