summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-04-25 22:41:58 +0200
committerLudovic Courtès <ludo@gnu.org>2011-04-25 22:41:58 +0200
commitd20912e67d810ce5eb9dc1b8f8afd8c22aa2451b (patch)
tree987f0fd1150c26e230547b21c076f867fca1b1e9
parentbbec4602457ed3e139e9dae99b4b495a3bc5eb71 (diff)
downloadguile-d20912e67d810ce5eb9dc1b8f8afd8c22aa2451b.tar.gz
Move `{total,current}-processor-count' outside of `posix.c'.
* libguile/posix.c (scm_total_processor_count, scm_current_processor_count): Move to... * libguile/threads.c: ... here. * libguile/posix.h (scm_total_processor_count, scm_current_processor_count): Move declarations to... * libguile/threads.h: ... here. * test-suite/tests/posix.test ("nproc"): Move tests to... * test-suite/tests/threads.test: ... here.
-rw-r--r--libguile/posix.c31
-rw-r--r--libguile/posix.h5
-rw-r--r--libguile/threads.c34
-rw-r--r--libguile/threads.h3
-rw-r--r--test-suite/tests/posix.test13
-rw-r--r--test-suite/tests/threads.test14
6 files changed, 53 insertions, 47 deletions
diff --git a/libguile/posix.c b/libguile/posix.c
index bfcefaee3..15b38e79c 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -142,7 +142,6 @@ extern char *ttyname();
#endif
#include <sys/file.h> /* from Gnulib */
-#include <nproc.h>
/* Some Unix systems don't define these. CPP hair is dangerous, but
this seems safe enough... */
@@ -1895,36 +1894,6 @@ SCM_DEFINE (scm_setaffinity, "setaffinity", 2, 0, 0,
#endif /* HAVE_SCHED_SETAFFINITY */
-SCM_DEFINE (scm_total_processor_count, "total-processor-count", 0, 0, 0,
- (void),
- "Return the total number of processors of the machine, which\n"
- "is guaranteed to be at least 1. A ``processor'' here is a\n"
- "thread execution unit, which can be either:\n\n"
- "@itemize\n"
- "@item an execution core in a (possibly multi-core) chip, in a\n"
- " (possibly multi- chip) module, in a single computer, or\n"
- "@item a thread execution unit inside a core in the case of\n"
- " @dfn{hyper-threaded} CPUs.\n"
- "@end itemize\n\n"
- "Which of the two definitions is used, is unspecified.\n")
-#define FUNC_NAME s_scm_total_processor_count
-{
- return scm_from_ulong (num_processors (NPROC_ALL));
-}
-#undef FUNC_NAME
-
-SCM_DEFINE (scm_current_processor_count, "current-processor-count", 0, 0, 0,
- (void),
- "Like @code{total-processor-count}, but return the number of\n"
- "processors available to the current process. See\n"
- "@code{setaffinity} and @code{getaffinity} for more\n"
- "information.\n")
-#define FUNC_NAME s_scm_current_processor_count
-{
- return scm_from_ulong (num_processors (NPROC_CURRENT));
-}
-#undef FUNC_NAME
-
#if HAVE_GETPASS
SCM_DEFINE (scm_getpass, "getpass", 1, 0, 0,
diff --git a/libguile/posix.h b/libguile/posix.h
index e2e19ddd2..92f8b3514 100644
--- a/libguile/posix.h
+++ b/libguile/posix.h
@@ -3,7 +3,8 @@
#ifndef SCM_POSIX_H
#define SCM_POSIX_H
-/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2003, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2003, 2006, 2008,
+ * 2009, 2010, 2011 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -91,8 +92,6 @@ SCM_API SCM scm_sethostname (SCM name);
SCM_API SCM scm_gethostname (void);
SCM_API SCM scm_getaffinity (SCM pid);
SCM_API SCM scm_setaffinity (SCM pid, SCM cpu_set);
-SCM_API SCM scm_total_processor_count (void);
-SCM_API SCM scm_current_processor_count (void);
SCM_INTERNAL void scm_init_posix (void);
SCM_INTERNAL scm_i_pthread_mutex_t scm_i_locale_mutex;
diff --git a/libguile/threads.c b/libguile/threads.c
index 4de819395..f49696b1d 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -39,6 +39,7 @@
#endif
#include <assert.h>
+#include <nproc.h>
#include "libguile/validate.h"
#include "libguile/root.h"
@@ -2010,6 +2011,39 @@ scm_c_thread_exited_p (SCM thread)
}
#undef FUNC_NAME
+SCM_DEFINE (scm_total_processor_count, "total-processor-count", 0, 0, 0,
+ (void),
+ "Return the total number of processors of the machine, which\n"
+ "is guaranteed to be at least 1. A ``processor'' here is a\n"
+ "thread execution unit, which can be either:\n\n"
+ "@itemize\n"
+ "@item an execution core in a (possibly multi-core) chip, in a\n"
+ " (possibly multi- chip) module, in a single computer, or\n"
+ "@item a thread execution unit inside a core in the case of\n"
+ " @dfn{hyper-threaded} CPUs.\n"
+ "@end itemize\n\n"
+ "Which of the two definitions is used, is unspecified.\n")
+#define FUNC_NAME s_scm_total_processor_count
+{
+ return scm_from_ulong (num_processors (NPROC_ALL));
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_current_processor_count, "current-processor-count", 0, 0, 0,
+ (void),
+ "Like @code{total-processor-count}, but return the number of\n"
+ "processors available to the current process. See\n"
+ "@code{setaffinity} and @code{getaffinity} for more\n"
+ "information.\n")
+#define FUNC_NAME s_scm_current_processor_count
+{
+ return scm_from_ulong (num_processors (NPROC_CURRENT));
+}
+#undef FUNC_NAME
+
+
+
+
static scm_i_pthread_cond_t wake_up_cond;
static int threads_initialized_p = 0;
diff --git a/libguile/threads.h b/libguile/threads.h
index 9e44684e1..609262a19 100644
--- a/libguile/threads.h
+++ b/libguile/threads.h
@@ -230,6 +230,9 @@ SCM_API int scm_pthread_cond_timedwait (pthread_cond_t *cond,
SCM_API unsigned int scm_std_sleep (unsigned int);
SCM_API unsigned long scm_std_usleep (unsigned long);
+SCM_API SCM scm_total_processor_count (void);
+SCM_API SCM scm_current_processor_count (void);
+
#endif /* SCM_THREADS_H */
/*
diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
index 79f3a92ae..9679042a6 100644
--- a/test-suite/tests/posix.test
+++ b/test-suite/tests/posix.test
@@ -198,16 +198,3 @@
(setaffinity (getpid) mask)
(equal? mask (getaffinity (getpid))))
(throw 'unresolved))))
-
-;;
-;; nproc
-;;
-
-(with-test-prefix "nproc"
-
- (pass-if "total-processor-count"
- (>= (total-processor-count) 1))
-
- (pass-if "current-processor-count"
- (and (>= (current-processor-count) 1)
- (>= (total-processor-count) (current-processor-count)))))
diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test
index 1166247c4..db002f245 100644
--- a/test-suite/tests/threads.test
+++ b/test-suite/tests/threads.test
@@ -463,3 +463,17 @@
(lambda () (lock-mutex m))
(lambda key (set! success #t)))
success)))))
+
+
+;;
+;; nproc
+;;
+
+(with-test-prefix "nproc"
+
+ (pass-if "total-processor-count"
+ (>= (total-processor-count) 1))
+
+ (pass-if "current-processor-count"
+ (and (>= (current-processor-count) 1)
+ (>= (total-processor-count) (current-processor-count)))))