[Python-checkins] cpython: check individually for some for sched_ functions

benjamin.peterson python-checkins at python.org
Wed Aug 3 01:07:46 CEST 2011


http://hg.python.org/cpython/rev/21730a883f20
changeset:   71708:21730a883f20
user:        Benjamin Peterson <benjamin at python.org>
date:        Tue Aug 02 18:07:32 2011 -0500
summary:
  check individually for some for sched_ functions

files:
  Lib/test/test_posix.py |   4 ++--
  Modules/posixmodule.c  |  30 ++++++++++++++++++++++++++++++
  configure              |   2 +-
  configure.in           |   2 +-
  pyconfig.h.in          |   9 +++++++++
  5 files changed, 43 insertions(+), 4 deletions(-)


diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -851,7 +851,7 @@
         self.assertRaises(OSError, posix.sched_get_priority_min, -23)
         self.assertRaises(OSError, posix.sched_get_priority_max, -23)
 
-    @requires_sched_h
+    @unittest.skipUnless(hasattr(posix, 'sched_setscheduler'), "can't change scheduler")
     def test_get_and_set_scheduler_and_param(self):
         possible_schedulers = [sched for name, sched in posix.__dict__.items()
                                if name.startswith("SCHED_")]
@@ -882,7 +882,7 @@
         param = posix.sched_param(sched_priority=-large)
         self.assertRaises(OverflowError, posix.sched_setparam, 0, param)
 
-    @requires_sched_h
+    @unittest.skipUnless(hasattr(posix, "sched_rr_get_interval"), "no function")
     def test_sched_rr_get_interval(self):
         interval = posix.sched_rr_get_interval(0)
         self.assertIsInstance(interval, float)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4585,6 +4585,8 @@
     return PyLong_FromLong(min);
 }
 
+#ifdef HAVE_SCHED_SETSCHEDULER
+
 PyDoc_STRVAR(posix_sched_getscheduler__doc__,
 "sched_getscheduler(pid)\n\n\
 Get the scheduling policy for the process with a PID of *pid*.\n\
@@ -4604,6 +4606,10 @@
     return PyLong_FromLong(policy);
 }
 
+#endif
+
+#if defined(HAVE_SCHED_SETSCHEDULER) || defined(HAVE_SCHED_SETPARAM)
+
 static PyObject *
 sched_param_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 {
@@ -4656,6 +4662,10 @@
     return 1;
 }
 
+#endif
+
+#ifdef HAVE_SCHED_SETSCHEDULER
+
 PyDoc_STRVAR(posix_sched_setscheduler__doc__,
 "sched_setscheduler(pid, policy, param)\n\n\
 Set the scheduling policy, *policy*, for *pid*.\n\
@@ -4677,6 +4687,10 @@
     Py_RETURN_NONE;
 }
 
+#endif
+
+#ifdef HAVE_SCHED_SETPARAM
+
 PyDoc_STRVAR(posix_sched_getparam__doc__,
 "sched_getparam(pid) -> sched_param\n\n\
 Returns scheduling parameters for the process with *pid* as an instance of the\n\
@@ -4724,6 +4738,10 @@
     Py_RETURN_NONE;
 }
 
+#endif
+
+#ifdef HAVE_SCHED_RR_GET_INTERVAL
+
 PyDoc_STRVAR(posix_sched_rr_get_interval__doc__,
 "sched_rr_get_interval(pid) -> float\n\n\
 Return the round-robin quantum for the process with PID *pid* in seconds.");
@@ -4741,6 +4759,8 @@
     return PyFloat_FromDouble((double)interval.tv_sec + 1e-9*interval.tv_nsec);
 }
 
+#endif
+
 PyDoc_STRVAR(posix_sched_yield__doc__,
 "sched_yield()\n\n\
 Voluntarily relinquish the CPU.");
@@ -10054,11 +10074,21 @@
 #ifdef HAVE_SCHED_H
     {"sched_get_priority_max", posix_sched_get_priority_max, METH_VARARGS, posix_sched_get_priority_max__doc__},
     {"sched_get_priority_min", posix_sched_get_priority_min, METH_VARARGS, posix_sched_get_priority_min__doc__},
+#ifdef HAVE_SCHED_SETPARAM
     {"sched_getparam", posix_sched_getparam, METH_VARARGS, posix_sched_getparam__doc__},
+#endif
+#ifdef HAVE_SCHED_SETSCHEDULER
     {"sched_getscheduler", posix_sched_getscheduler, METH_VARARGS, posix_sched_getscheduler__doc__},
+#endif
+#ifdef HAVE_SCHED_RR_GET_INTERVAL
     {"sched_rr_get_interval", posix_sched_rr_get_interval, METH_VARARGS, posix_sched_rr_get_interval__doc__},
+#endif
+#ifdef HAVE_SCHED_SETPARAM
     {"sched_setparam", posix_sched_setparam, METH_VARARGS, posix_sched_setparam__doc__},
+#endif
+#ifdef HAVE_SCHED_SETSCHEDULER
     {"sched_setscheduler", posix_sched_setscheduler, METH_VARARGS, posix_sched_setscheduler__doc__},
+#endif
     {"sched_yield",     posix_sched_yield, METH_NOARGS, posix_sched_yield__doc__},
 #ifdef HAVE_SCHED_SETAFFINITY
     {"sched_setaffinity", posix_sched_setaffinity, METH_VARARGS, posix_sched_setaffinity__doc__},
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -9339,7 +9339,7 @@
  select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
  setgid sethostname \
  setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
- sched_setaffinity \
+ sched_setaffinity sched_setscheduler sched_setparam sched_rr_get_interval \
  sigaction sigaltstack siginterrupt sigpending sigrelse \
  sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
  sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
@@ -2537,7 +2537,7 @@
  select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
  setgid sethostname \
  setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
- sched_setaffinity \
+ sched_setaffinity sched_setscheduler sched_setparam sched_rr_get_interval \
  sigaction sigaltstack siginterrupt sigpending sigrelse \
  sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
  sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
diff --git a/pyconfig.h.in b/pyconfig.h.in
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -653,9 +653,18 @@
 /* Define to 1 if you have the <sched.h> header file. */
 #undef HAVE_SCHED_H
 
+/* Define to 1 if you have the `sched_rr_get_interval' function. */
+#undef HAVE_SCHED_RR_GET_INTERVAL
+
 /* Define to 1 if you have the `sched_setaffinity' function. */
 #undef HAVE_SCHED_SETAFFINITY
 
+/* Define to 1 if you have the `sched_setparam' function. */
+#undef HAVE_SCHED_SETPARAM
+
+/* Define to 1 if you have the `sched_setscheduler' function. */
+#undef HAVE_SCHED_SETSCHEDULER
+
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list