From f92f41acea3c972d615a016892e25110ad26a7e3 Mon Sep 17 00:00:00 2001 From: Brian Wellington Date: Sat, 6 Jan 2001 01:10:04 +0000 Subject: [PATCH] Detect multiple CPUs on HP-UX. --- lib/isc/unix/os.c | 49 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/lib/isc/unix/os.c b/lib/isc/unix/os.c index c6bcbf0a31..489caf6fe9 100644 --- a/lib/isc/unix/os.c +++ b/lib/isc/unix/os.c @@ -15,27 +15,58 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: os.c,v 1.6 2001/01/04 02:52:13 bwelling Exp $ */ +/* $Id: os.c,v 1.7 2001/01/06 01:10:04 bwelling Exp $ */ #include +#include + + +#ifdef HAVE_SYSCONF + #include -#include +static inline long +sysconf_ncpus(void) { +#if defined(_SC_NPROCESSORS_ONLN) + return sysconf((_SC_NPROCESSORS_ONLN)); +#elif defined(_SC_NPROC_ONLN) + return sysconf((_SC_NPROC_ONLN)); +#endif + return (0); + +} +#endif /* HAVE_SYSCONF */ + + +#ifdef __hpux + +#include + +static inline int +hpux_ncpus(void) { + struct pst_dynamic psd; + if (pstat_getdynamic(&psd, sizeof(psd), 1, 0) != -1) + return (psd.psd_proc_cnt); + else + return (0); +} + +#endif /* __hpux */ + unsigned int isc_os_ncpus(void) { - long ncpus = 1; + long ncpus = 0; -#if defined(HAVE_SYSCONF) -#if defined(_SC_NPROCESSORS_ONLN) - ncpus = sysconf(_SC_NPROCESSORS_ONLN); -#elif defined(_SC_NPROC_ONLN) - ncpus = sysconf(_SC_NPROC_ONLN); +#ifdef __hpux + ncpus = hpux_ncpus(); +#elif defined(HAVE_SYSCONF) + ncpus = sysconf_ncpus(); #endif + if (ncpus <= 0) ncpus = 1; -#endif return ((unsigned int)ncpus); }