Author: Joannah Nanjekye <nanjekyejoan...@gmail.com>
Branch: get/setpriority
Changeset: r90377:e245c0e11157
Date: 2016-12-27 23:45 +0300
http://bitbucket.org/pypy/pypy/changeset/e245c0e11157/

Log:    getpriority and setpriority attributes

diff --git a/pypy/module/posix/__init__.py b/pypy/module/posix/__init__.py
--- a/pypy/module/posix/__init__.py
+++ b/pypy/module/posix/__init__.py
@@ -169,7 +169,8 @@
                  'setpgrp', 'getppid', 'getpgid', 'setpgid', 'setreuid',
                  'setregid', 'getsid', 'setsid', 'fstatvfs', 'statvfs',
                  'setgroups', 'initgroups', 'tcgetpgrp', 'tcsetpgrp',
-                 'getresuid', 'getresgid', 'setresuid', 'setresgid']:
+                 'getresuid', 'getresgid', 'setresuid', 'setresgid',
+                 'getpriority', 'setpriority']:
         if hasattr(os, name):
             interpleveldefs[name] = 'interp_posix.%s' % (name,)
     # not visible via os, inconsistency in nt:
diff --git a/pypy/module/posix/interp_posix.py 
b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -1605,6 +1605,29 @@
     except OSError as e:
         raise wrap_oserror(space, e)
 
+@unwrap_spec(program=int, identifier=int)
+def getpriority(space, program, identifier):
+    """ getpriority(process, identifier) -> current_priority
+    
+    Get program scheduling priority.
+    """
+    try:
+        returned_priority = os.getpriority(process, identifier)
+    except OSError as e:
+        raise wrap_oserror(space, e)
+    return space.wrap(returned_priority)
+
+@unwrap_spec(program=int, identifier=int, priority=int)
+def setpriority(space, program, identifier, priority):
+    """ setpriority(process, identifier) 
+    
+    Set program scheduling priority.
+    """
+    try:
+        os.setpriority(process, identifier, priority)
+    except OSError as e:
+        raise wrap_oserror(space, e)
+        
 @unwrap_spec(path='fsencode')
 def chroot(space, path):
     """ chroot(path)
@@ -2241,4 +2264,4 @@
             flags |= rposix.O_NONBLOCK
         rposix.set_status_flags(fd, flags)
     except OSError as e:
-        raise wrap_oserror(space, e)
+        raise wrap_oserror(space, e)
\ No newline at end of file
diff --git a/pypy/module/posix/test/test_posix2.py 
b/pypy/module/posix/test/test_posix2.py
--- a/pypy/module/posix/test/test_posix2.py
+++ b/pypy/module/posix/test/test_posix2.py
@@ -850,6 +850,17 @@
         assert st.st_size == 10000000000
     test_largefile.need_sparse_files = True
 
+    def test_os_getpriority(self):
+        posix, os = self.posix, self.os
+        assert os.getpriority(os.PRIO_PROCESS, os.getpid()) == 
posix.getpriority(os.PRIO_PROCESS, os.getpid())
+
+    def test_os_setpriority(self):
+        os = self.posix
+        result = os.getpriority(os.PRIO_PROCESS, os.getpid())
+        os.setpriority(os.PRIO_PROCESS, os.getpid(), result + 1)
+        new_result = os.getpriority(os.PRIO_PROCESS, os.getpid())
+        assert new_result == (result + 1)
+
     def test_write_buffer(self):
         os = self.posix
         fd = os.open(self.path2 + 'test_write_buffer',
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to