2 #include "thread-utils.h"
 
   4 #if defined(hpux) || defined(__hpux) || defined(_hpux)
 
   5 #  include <sys/pstat.h>
 
   9  * By doing this in two steps we can at least get
 
  10  * the function to be somewhat coherent, even
 
  11  * with this disgusting nest of #ifdefs.
 
  13 #ifndef _SC_NPROCESSORS_ONLN
 
  14 #  ifdef _SC_NPROC_ONLN
 
  15 #    define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN
 
  16 #  elif defined _SC_CRAY_NCPU
 
  17 #    define _SC_NPROCESSORS_ONLN _SC_CRAY_NCPU
 
  23 #ifdef _SC_NPROCESSORS_ONLN
 
  31         if ((int)info.dwNumberOfProcessors > 0)
 
  32                 return (int)info.dwNumberOfProcessors;
 
  33 #elif defined(hpux) || defined(__hpux) || defined(_hpux)
 
  34         struct pst_dynamic psd;
 
  36         if (!pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0))
 
  37                 return (int)psd.psd_proc_cnt;
 
  40 #ifdef _SC_NPROCESSORS_ONLN
 
  41         if ((ncpus = (long)sysconf(_SC_NPROCESSORS_ONLN)) > 0)
 
  48 int init_recursive_mutex(pthread_mutex_t *m)
 
  50         pthread_mutexattr_t a;
 
  53         ret = pthread_mutexattr_init(&a);
 
  55                 ret = pthread_mutexattr_settype(&a, PTHREAD_MUTEX_RECURSIVE);
 
  57                         ret = pthread_mutex_init(m, &a);
 
  58                 pthread_mutexattr_destroy(&a);