Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r89663:920d60110d57
Date: 2017-01-18 19:14 +0100
http://bitbucket.org/pypy/pypy/changeset/920d60110d57/
Log: hg merge default
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -234,6 +234,7 @@
_ptyh = 'pty.h'
includes = ['unistd.h', 'sys/types.h', 'sys/wait.h',
'utime.h', 'sys/time.h', 'sys/times.h',
+ 'sys/resource.h',
'grp.h', 'dirent.h', 'sys/stat.h', 'fcntl.h',
'signal.h', 'sys/utsname.h', _ptyh]
if sys.platform.startswith('freebsd'):
@@ -249,6 +250,9 @@
SEEK_SET = rffi_platform.DefinedConstantInteger('SEEK_SET')
SEEK_CUR = rffi_platform.DefinedConstantInteger('SEEK_CUR')
SEEK_END = rffi_platform.DefinedConstantInteger('SEEK_END')
+ PRIO_PROCESS = rffi_platform.DefinedConstantInteger('PRIO_PROCESS')
+ PRIO_PGRP = rffi_platform.DefinedConstantInteger('PRIO_PGRP')
+ PRIO_USER = rffi_platform.DefinedConstantInteger('PRIO_USER')
O_NONBLOCK = rffi_platform.DefinedConstantInteger('O_NONBLOCK')
OFF_T_SIZE = rffi_platform.SizeOf('off_t')
@@ -261,6 +265,7 @@
if not _WIN32:
UID_T = rffi_platform.SimpleType('uid_t', rffi.UINT)
GID_T = rffi_platform.SimpleType('gid_t', rffi.UINT)
+ ID_T = rffi_platform.SimpleType('id_t', rffi.UINT)
TIOCGWINSZ = rffi_platform.DefinedConstantInteger('TIOCGWINSZ')
TMS = rffi_platform.Struct(
@@ -1734,6 +1739,22 @@
def setresgid(rgid, egid, sgid):
handle_posix_error('setresgid', c_setresgid(rgid, egid, sgid))
+ c_getpriority = external('getpriority', [rffi.INT, ID_T], rffi.INT,
+ save_err=rffi.RFFI_FULL_ERRNO_ZERO)
+ c_setpriority = external('setpriority', [rffi.INT, ID_T, rffi.INT],
+ rffi.INT, save_err=rffi.RFFI_SAVE_ERRNO)
+
+ def getpriority(which, who):
+ result = widen(c_getpriority(which, who))
+ error = get_saved_errno()
+ if error != 0:
+ raise OSError(error, 'getpriority failed')
+ return result
+
+ def setpriority(which, who, prio):
+ handle_posix_error('setpriority', c_setpriority(which, who, prio))
+
+
#___________________________________________________________________
c_chroot = external('chroot', [rffi.CCHARP], rffi.INT,
diff --git a/rpython/rlib/test/test_rposix.py b/rpython/rlib/test/test_rposix.py
--- a/rpython/rlib/test/test_rposix.py
+++ b/rpython/rlib/test/test_rposix.py
@@ -669,3 +669,10 @@
finally:
os.close(fd1)
os.close(fd2)
+
+@rposix_requires('getpriority')
+def test_getpriority():
+ # a "don't crash" kind of test only
+ prio = rposix.getpriority(rposix.PRIO_PROCESS, 0)
+ rposix.setpriority(rposix.PRIO_PROCESS, 0, prio)
+ py.test.raises(OSError, rposix.getpriority, rposix.PRIO_PGRP, 123456789)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit