Skip to content

Instantly share code, notes, and snippets.

@rfuchs
Created April 11, 2019 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rfuchs/1bb7348b6acbe37e557d94c2f69a1498 to your computer and use it in GitHub Desktop.
Save rfuchs/1bb7348b6acbe37e557d94c2f69a1498 to your computer and use it in GitHub Desktop.
#include <pthread.h>
#include <dlfcn.h>
int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr)
{
int (*real_pthread_mutex_init)(pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr)
= 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 pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
const pthread_rwlockattr_t *__restrict
__attr)
{
int (*real_pthread_rwlock_init)(pthread_rwlock_t *__restrict __rwlock,
const pthread_rwlockattr_t *__restrict
__attr)
= dlsym(RTLD_NEXT, "pthread_rwlock_init");
if (__attr) {
pthread_rwlockattr_t attr = *__attr;
pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
return real_pthread_rwlock_init(__rwlock, &attr);
}
pthread_rwlockattr_t attr;
pthread_rwlockattr_init(&attr);
pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
int ret = real_pthread_rwlock_init(__rwlock, &attr);
pthread_rwlockattr_destroy(&attr);
return ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment