summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGwenolé Beauchesne <gbeauchesne@mandriva.org>2002-11-05 15:52:22 +0000
committerGwenolé Beauchesne <gbeauchesne@mandriva.org>2002-11-05 15:52:22 +0000
commit050796374b29c330ec800798a08336e8066bdd6f (patch)
tree646e8b46c5ce27f29e837714e1420b13183d8e68
parent87600c03a38ec57e136b27903c14f1f0a80f9b88 (diff)
downloaddrakx-backup-do-not-use-050796374b29c330ec800798a08336e8066bdd6f.tar
drakx-backup-do-not-use-050796374b29c330ec800798a08336e8066bdd6f.tar.gz
drakx-backup-do-not-use-050796374b29c330ec800798a08336e8066bdd6f.tar.bz2
drakx-backup-do-not-use-050796374b29c330ec800798a08336e8066bdd6f.tar.xz
drakx-backup-do-not-use-050796374b29c330ec800798a08336e8066bdd6f.zip
Add generic cpu detection on x86-64 and IA-64, based on
sysconf(_SC_NPROCESSORS_ONLN)
-rw-r--r--perl-install/c/smp.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/perl-install/c/smp.c b/perl-install/c/smp.c
index baf786cc6..3255ce9c4 100644
--- a/perl-install/c/smp.c
+++ b/perl-install/c/smp.c
@@ -473,6 +473,17 @@ readEntry( void* entry, int size )
#endif /* __i386__ */
+static int sysconfDetectSMP(void)
+{
+ long nprocs;
+
+ /* Error: assume we are *not* SMP. */
+ if ((nprocs = sysconf(_SC_NPROCESSORS_ONLN)) < 0)
+ nprocs = 1;
+
+ return nprocs > 1;
+}
+
int detectSMP(void)
{
static int isSMP = -1;
@@ -488,12 +499,9 @@ int detectSMP(void)
return isSMP = alphaDetectSMP();
#elif __powerpc__
return isSMP = ppcDetectSMP();
-#elif __ia64__
- /* TODO: Update to check against /proc/pal/cpuX */
- return isSMP = 1;
-#elif __x86_64__
- /* TODO: Update when SMP machines are there */
- return isSMP = 0;
+#elif defined(__ia64__) || defined(__x86_64__)
+ /* TODO: IA-64, maybe check against /proc/pal/cpuX ? */
+ return isSMP = sysconfDetectSMP();
#else
#error unknown architecture
#endif