summaryrefslogtreecommitdiff
path: root/psutil/_pslinux.py
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2020-12-17 18:59:13 +0100
committerGitHub <noreply@github.com>2020-12-17 18:59:13 +0100
commit6bdde37049ba9fae31ccf83620468f77a6b9f396 (patch)
tree33875d40066b6b48b5ed5161d230288d968f6cc1 /psutil/_pslinux.py
parentc39fef497f0c2c963a9db03ef80cdb156f64a425 (diff)
downloadpsutil-6bdde37049ba9fae31ccf83620468f77a6b9f396.tar.gz
[macOS, UNIX] prefer _SC_PAGESIZE over (partially) deprecated getpagesize() (#1891)
Add a reusable `psutil_getpagesize()` utility common to all UNIXes. Related to #1885 (`getpagesize()` is deprecated on recent macOS, POSIX.1-2001 and possibly other UNIXes). The problem emerged on macOS but `getpagesize()` is also used in FreeBSD, NetBSD, OpenBSD and AIX, so it makes sense to do this in one place only, similarly to Windows which also provide a `psutil_getpagesize()` utility. Follow cPython's `mmapmodule.c` and `resourcemodule.c` lead and rely on `sysconf(_SC_PAGESIZE)` instead, but leave `getpagesize()` in place as last resort/attempt for systems where it's not deprecated and/or they still legitimately rely on it. Also provide a python wrapper so we can test the return value of this C function against Python's stdlib modules. Signed-off-by: Giampaolo Rodola <g.rodola@gmail.com>
Diffstat (limited to 'psutil/_pslinux.py')
-rw-r--r--psutil/_pslinux.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/psutil/_pslinux.py b/psutil/_pslinux.py
index ff13b5eb..068c3f03 100644
--- a/psutil/_pslinux.py
+++ b/psutil/_pslinux.py
@@ -81,7 +81,7 @@ _DEFAULT = object()
# Number of clock ticks per second
CLOCK_TICKS = os.sysconf("SC_CLK_TCK")
-PAGESIZE = os.sysconf("SC_PAGE_SIZE")
+PAGESIZE = cext_posix.getpagesize()
BOOT_TIME = None # set later
# Used when reading "big" files, namely /proc/{pid}/smaps and /proc/net/*.
# On Python 2, using a buffer with open() for such files may result in a