Author: Joannah Nanjekye <nanjekyejoan...@gmail.com> Branch: get/setpriority Changeset: r90379:a36386624a08 Date: 2016-12-30 17:29 +0300 http://bitbucket.org/pypy/pypy/changeset/a36386624a08/
Log: translate to corresponding C code 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,29 +1605,6 @@ 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) @@ -1863,6 +1840,29 @@ except OSError as e: raise wrap_oserror(space, e) +@unwrap_spec(program=int, identifier=int) +def getpriority(space, program, identifier): + """ getpriority(process, identifier) -> int + + Get program scheduling priority. + """ + try: + returned_priority = rposix.getpriority(program, 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: + rposix.setpriority(program, identifier, priority) + except OSError as e: + raise wrap_oserror(space, e) + def declare_new_w_star(name): if name in ('WEXITSTATUS', 'WSTOPSIG', 'WTERMSIG'): @unwrap_spec(status=c_int) 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 @@ -852,15 +852,15 @@ 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()) + assert os.getpriority(1,os.getpid()) == posix.getpriority(1,os.getpid()) def test_os_setpriority(self): posix, os = self.posix, self.os - result = posix.getpriority(os.PRIO_PROCESS, os.getpid()) - posix.setpriority(os.PRIO_PROCESS, os.getpid(), result + 1) - new_result = posix.getpriority(os.PRIO_PROCESS, os.getpid()) - assert new_result == (result + 1) - + orig_priority = posix.getpriority(1, os.getpid()) + posix.setpriority(1, os.getpid(), orig_priority + 1) + new_result = posix.getpriority(1, os.getpid()) + assert new_result == (orig_priority + 1) + def test_write_buffer(self): os = self.posix fd = os.open(self.path2 + 'test_write_buffer', diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py --- a/rpython/rlib/rposix.py +++ b/rpython/rlib/rposix.py @@ -1734,6 +1734,19 @@ def setresgid(rgid, egid, sgid): handle_posix_error('setresgid', c_setresgid(rgid, egid, sgid)) + c_getpriority = external('getpriority', [rffi.INT, rffi.INT], rffi.INT, + save_err=rffi.RFFI_SAVE_ERRNO) + c_setpriority = external('setpriority', [rffi.INT, rffi.INT, rffi.INT], rffi.INT, + save_err=rffi.RFFI_SAVE_ERRNO) + + @replace_os_function('getpriority') + def getpriority(program, identifier): + return handle_posix_error('getpriority', c_getpriority(program, identifier)) + + @replace_os_function('setpriority') + def setpriority(program, identifier, priority): + handle_posix_error('setpriority', c_setpriority(program, identifier, priority)) + #___________________________________________________________________ c_chroot = external('chroot', [rffi.CCHARP], rffi.INT, _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit