1 //===-- tsan_posix_util.h ---------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 // This file is a part of ThreadSanitizer (TSan), a race detector.
12 //===----------------------------------------------------------------------===//
13 #ifndef TSAN_POSIX_UTIL_H
14 #define TSAN_POSIX_UTIL_H
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
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 *),
49 extern "C" int __interceptor_pthread_join(pthread_t thread
, void **value_ptr
);
50 extern "C" int __interceptor_pthread_detach(pthread_t thread
);
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
);
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
);
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
);
76 #endif // #ifndef TSAN_POSIX_UTIL_H