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