int SYMBOL_EXPORT pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr) { static int (*real_pthread_mutex_init)(pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr); if (!real_pthread_mutex_init) real_pthread_mutex_init = dlsym(RTLD_NEXT, "pthread_mutex_init"); if (__mutexattr) { pthread_mutexattr_t attr = *__mutexattr; pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); return real_pthread_mutex_init(__mutex, &attr); } pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); int ret = real_pthread_mutex_init(__mutex, &attr); pthread_mutexattr_destroy(&attr); return ret; }
int reeact_policy_pthread_mutex_init(void *mutex, void *attr) { #ifdef _REEACT_DEFAULT_POLICY_ return real_pthread_mutex_init((pthread_mutex_t*)mutex, (pthread_mutexattr_t*)attr); #else // TODO: add user-policy here return 0; #endif }