On Wed, Jan 07, 2015 at 03:55:11PM +0100, Bernd Edlinger wrote:
> cat barrier.h
> #include <dlfcn.h>
> 
> static pthread_barrier_t barrier;
> 
> static int (*barrier_wait)(pthread_barrier_t *);

Better
static __typeof (pthread_barrier_wait) *barrier_wait;
?
> 
> __attribute__((constructor(101)))

I wouldn't use a constructor for it, instead simply call it from the
testcase at the start of main.

> void barrier_init()
> {
>   pthread_barrier_init (&barrier, NULL, 2);
>   barrier_wait = (int (*)(pthread_barrier_t *))
>                  dlsym (dlopen ("pthread.so.0", RTLD_NOW), 
> "pthread_barrier_wait");

"libpthread.so.0" instead.

I'd use:
#ifdef RTLD_NOLOAD
  void *h = dlopen ("libpthread.so.0", RTLD_NOLOAD);
#else
  void *h = dlopen ("libpthread.so.0", RTLD_NOW);
#endif
  barrier_wait = (__typeof (pthread_barrier_wait) *) dlsym (h, 
"pthread_barrier_wait");

        Jakub

Reply via email to