diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2015-06-13 22:01:14 +0200 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2015-06-13 22:01:14 +0200 |
commit | 9c842fce61a93a8aedbfcd3e65e48c3c78926c7f (patch) | |
tree | f65ed4c85d51531ac70c6b79c39471e284cb318c | |
parent | 38266d346b28b6df6da1d9b5155a31294e812dc3 (diff) | |
download | psutil-9c842fce61a93a8aedbfcd3e65e48c3c78926c7f.tar.gz |
use sysctlbyname to get cpu_count() logical and also add unit tests
-rw-r--r-- | psutil/_psutil_osx.c | 9 | ||||
-rw-r--r-- | test/_osx.py | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/psutil/_psutil_osx.c b/psutil/_psutil_osx.c index 4f0ae2be..abb926b4 100644 --- a/psutil/_psutil_osx.c +++ b/psutil/_psutil_osx.c @@ -396,6 +396,7 @@ error: */ static PyObject * psutil_cpu_count_logical(PyObject *self, PyObject *args) { + /* int mib[2]; int ncpu; size_t len; @@ -407,6 +408,14 @@ psutil_cpu_count_logical(PyObject *self, PyObject *args) { Py_RETURN_NONE; // mimic os.cpu_count() else return Py_BuildValue("i", ncpu); + */ + int num; + size_t size = sizeof(int); + + if (sysctlbyname("hw.logicalcpu", &num, &size, NULL, 2)) + Py_RETURN_NONE; // mimic os.cpu_count() + else + return Py_BuildValue("i", num); } diff --git a/test/_osx.py b/test/_osx.py index 2c088b51..3133ac66 100644 --- a/test/_osx.py +++ b/test/_osx.py @@ -127,6 +127,14 @@ class OSXSpecificTestCase(unittest.TestCase): self.assertAlmostEqual(psutil.virtual_memory().wired, num, delta=MEMORY_TOLERANCE) + def test_cpu_count_logical(self): + num = sysctl("sysctl hw.logicalcpu") + self.assertEqual(num, psutil.cpu_count(logical=True)) + + def test_cpu_count_physical(self): + num = sysctl("sysctl hw.physicalcpu") + self.assertEqual(num, psutil.cpu_count(logical=False)) + # --- swap mem def test_swapmem_sin(self): |