MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
get_nprocs.c
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/libraries/libobjs/get_nprocs.c,v 1.18 2017/01/12 14:44:46 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
33 
34 #include <unistd.h>
35 #include <ac/sys_sysinfo.h>
36 #ifdef HAVE_SYS_PSTAT_H
37 #include <sys/pstat.h>
38 #endif /* HAVE_SYS_PSTAT_H */
39 
40 #ifndef HAVE_GET_NPROCS
41 
42 /* GNU libc */
43 int
45 {
46 #warning "pippero!!!"
47 #if defined(_SC_NPROCESSORS_ONLN)
48  /* POSIX.1. */
49  return sysconf(_SC_NPROCESSORS_ONLN);
50 #elif defined(_SC_NPROC_ONLN)
51  /* IRIX? POSIX? */
52  return sysconf(_SC_NPROC_ONLN);
53 #elif defined(_SC_CRAY_NCPU)
54  /* Cray? */
55  return sysconf(_SC_CRAY_NCPU);
56 #elif defined(HAVE_PSTAT_GETDYNAMIC)
57  /* HP-UX */
58  struct pst_dynamic psd;
59 
60  if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) != -1) {
61  return psd.psd_proc_cnt;
62  }
63 #else /* add more if known */
64 
65 #endif
66  /* we assume that there is at least one :) */
67  return 1;
68 }
69 
70 #endif /* HAVE_GET_NPROCS */
71 
72 #ifndef HAVE_GET_NPROCS_CONF
73 
74 /* GNU libc */
75 int
77 {
78 #warning "pippero!!!"
79 #if defined(_SC_NPROCESSORS_CONF)
80  /* POSIX.1. */
81  return sysconf(_SC_NPROCESSORS_CONF);
82 #elif defined(_SC_NPROC_CONF)
83  /* IRIX? POSIX? */
84  return sysconf(_SC_NPROC_CONF);
85 #elif defined(HAVE_GET_NCPUS)
86  /* Cray? */
87  return get_ncpus();
88 #elif defined(HAVE_PSTAT_GETDYNAMIC)
89  /* HP-UX */
90  struct pst_dynamic psd;
91 
92  if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) != -1) {
93  return psd.psd_max_proc_cnt;
94  }
95 #else /* add more if known */
96 
97 #endif
98  /* we assume that there is at least one :) */
99  return 1;
100 }
101 
102 #endif /* HAVE_GET_NPROCS_CONF */
103 
int get_nprocs_conf(void)
Definition: get_nprocs.c:76
int get_nprocs(void)
Definition: get_nprocs.c:44