diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2010-05-10 19:54:15 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2010-05-10 19:54:15 +0300 |
commit | 6548e304657e77d3a972053db3c41c5daf591113 (patch) | |
tree | c8ae4f8c278d244d9d4f17084b7095beea9ea9dc /src/common/tuklib_cpucores.c | |
parent | Show both elapsed time and estimated remaining time in xz -v. (diff) | |
download | xz-6548e304657e77d3a972053db3c41c5daf591113.tar.xz |
Updates to tuklib_physmem and tuklib_cpucores.
Don't use #error to generate compile error, because some
compilers actually don't take it as an error. This fixes
tuklib_physmem on IRIX.
Fix incorrect error check for sysconf() return values.
Add AIX, HP-UX, and Tru64 specific code to detect the
amount RAM.
Add HP-UX specific code to detect the number of CPU cores.
Thanks a lot to Peter O'Gorman for initial patches,
testing, and debugging these fixes.
Diffstat (limited to 'src/common/tuklib_cpucores.c')
-rw-r--r-- | src/common/tuklib_cpucores.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/common/tuklib_cpucores.c b/src/common/tuklib_cpucores.c index e35d9bc7..1da13df7 100644 --- a/src/common/tuklib_cpucores.c +++ b/src/common/tuklib_cpucores.c @@ -20,6 +20,11 @@ #elif defined(TUKLIB_CPUCORES_SYSCONF) # include <unistd.h> + +// HP-UX +#elif defined(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) +# include <sys/param.h> +# include <sys/pstat.h> #endif @@ -34,7 +39,7 @@ tuklib_cpucores(void) size_t cpus_size = sizeof(cpus); if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1 && cpus_size == sizeof(cpus) && cpus > 0) - ret = (uint32_t)cpus; + ret = cpus; #elif defined(TUKLIB_CPUCORES_SYSCONF) # ifdef _SC_NPROCESSORS_ONLN @@ -45,7 +50,12 @@ tuklib_cpucores(void) const long cpus = sysconf(_SC_NPROC_ONLN); # endif if (cpus > 0) - ret = (uint32_t)cpus; + ret = cpus; + +#elif defined(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) + struct pst_dynamic pst; + if (pstat_getdynamic(&pst, sizeof(pst), 1, 0) != -1) + ret = pst.psd_proc_cnt; #endif return ret; |