#include "pthread_impl.h"
#include <sys/mman.h>

int __munmap(void*, size_t);
void __pthread_testcancel(void);
int __pthread_setcancelstate(int, int*);

int __pthread_join(pthread_t t, void** res) {
  int tmp, cs;
  __pthread_testcancel();
  __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
  if (cs == PTHREAD_CANCEL_ENABLE)
    __pthread_setcancelstate(cs, 0);
  while ((tmp = t->tid))
    __timedwait_cp(&t->tid, tmp, 0, 0, 0);
  __pthread_setcancelstate(cs, 0);
  a_barrier();
  if (res)
    *res = t->result;
  if (t->map_base)
    __munmap(t->map_base, t->map_size);
  return 0;
}

weak_alias(__pthread_join, pthread_join);
