From 2ea759e2faab0331078b1ea0df244ef781dbd994 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 18 Oct 2009 10:42:19 +0200 Subject: [PATCH] Implement nproc for HP-UX. --- ChangeLog | 8 ++++++++ lib/nproc.c | 13 +++++++++++++ m4/nproc.m4 | 6 +++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 240ef97ae..c715d0a41 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-18 Bruno Haible + + Implement nproc for HP-UX. + * lib/nproc.c: Include + (num_processors): On HP-UX systems, try pstat_getdynamic. + * m4/nproc.m4 (gl_PREREQ_NPROC): Check for sys/pstat.h and + pstat_getdynamic. + 2009-10-18 Giuseppe Scrivano Bruno Haible diff --git a/lib/nproc.c b/lib/nproc.c index a1a7c41df..48c0d8aff 100644 --- a/lib/nproc.c +++ b/lib/nproc.c @@ -25,6 +25,10 @@ #include +#if HAVE_SYS_PSTAT_H +# include +#endif + #if HAVE_SYS_PARAM_H # include #endif @@ -49,6 +53,15 @@ num_processors (void) } #endif +#if HAVE_PSTAT_GETDYNAMIC + { /* This works on HP-UX. */ + struct pst_dynamic psd; + if (0 <= pstat_getdynamic (&psd, sizeof psd, 1, 0) + && 0 < psd.psd_proc_cnt) + return psd.psd_proc_cnt; + } +#endif + #if HAVE_SYSCTL && defined HW_NCPU { /* This works on MacOS X, FreeBSD, NetBSD, OpenBSD. */ int nprocs; diff --git a/m4/nproc.m4 b/m4/nproc.m4 index 73b812dd2..5bcae8028 100644 --- a/m4/nproc.m4 +++ b/m4/nproc.m4 @@ -1,4 +1,4 @@ -# nproc.m4 serial 1 +# nproc.m4 serial 2 dnl Copyright (C) 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -12,7 +12,7 @@ AC_DEFUN([gl_NPROC], # Prerequisites of lib/nproc.c. AC_DEFUN([gl_PREREQ_NPROC], [ - AC_CHECK_HEADERS([sys/param.h],,, [AC_INCLUDES_DEFAULT]) + AC_CHECK_HEADERS([sys/pstat.h sys/param.h],,, [AC_INCLUDES_DEFAULT]) dnl requires on OpenBSD 4.0. AC_CHECK_HEADERS([sys/sysctl.h],,, [AC_INCLUDES_DEFAULT @@ -20,5 +20,5 @@ AC_DEFUN([gl_PREREQ_NPROC], # include #endif ]) - AC_CHECK_FUNCS([sysctl]) + AC_CHECK_FUNCS([pstat_getdynamic sysctl]) ]) -- 2.11.0