summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2013-12-08 13:35:55 (GMT)
committerChristian Heimes <christian@cheimes.de>2013-12-08 13:35:55 (GMT)
commit5bb414d176b5c99d9f2500738fe77c47ea938763 (patch)
tree84b7bfa89c46eb75e08ddb25ba174ac2b769271e
parentead8d0858b326ec8d902dc597aa3da23e4c5a82b (diff)
downloadcpython-5bb414d176b5c99d9f2500738fe77c47ea938763.zip
cpython-5bb414d176b5c99d9f2500738fe77c47ea938763.tar.gz
cpython-5bb414d176b5c99d9f2500738fe77c47ea938763.tar.bz2
Issue #19343: Expose FreeBSD-specific APIs in resource module. Original patch by Koobs.
-rw-r--r--Doc/library/resource.rst28
-rw-r--r--Lib/test/test_resource.py6
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/resource.c14
4 files changed, 51 insertions, 0 deletions
diff --git a/Doc/library/resource.rst b/Doc/library/resource.rst
index 9bb5848..f8112cc 100644
--- a/Doc/library/resource.rst
+++ b/Doc/library/resource.rst
@@ -217,6 +217,34 @@ platform.
.. versionadded:: 3.4
+.. data:: RLIMIT_SBSIZE
+
+ The maximum size (in bytes) of socket buffer usage for this user.
+ This limits the amount of network memory, and hence the amount of mbufs,
+ that this user may hold at any time.
+
+ Availability: FreeBSD 9 or later.
+
+ .. versionadded:: 3.4
+
+.. data:: RLIMIT_SWAP
+
+ The maximum size (in bytes) of the swap space that may be reserved or
+ used by all of this user id's processes.
+ This limit is enforced only if bit 1 of the vm.overcommit sysctl is set.
+ Please see :manpage:`tuning(7)` for a complete description of this sysctl.
+
+ Availability: FreeBSD 9 or later.
+
+ .. versionadded:: 3.4
+
+.. data:: RLIMIT_NPTS
+
+ The maximum number of pseudo-terminals created by this user id.
+
+ Availability: FreeBSD 9 or later.
+
+ .. versionadded:: 3.4
Resource Usage
--------------
diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
index 006198f..2ecae0f 100644
--- a/Lib/test/test_resource.py
+++ b/Lib/test/test_resource.py
@@ -138,6 +138,12 @@ class ResourceTest(unittest.TestCase):
with contextlib.suppress(AttributeError):
self.assertIsInstance(getattr(resource, 'RLIMIT_' + attr), int)
+ @support.requires_freebsd_version(9)
+ def test_freebsd_contants(self):
+ for attr in ['SWAP', 'SBSIZE', 'NPTS']:
+ with contextlib.suppress(AttributeError):
+ self.assertIsInstance(getattr(resource, 'RLIMIT_' + attr), int)
+
@unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
@support.requires_linux_version(2, 6, 36)
def test_prlimit(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index 93cdbf4..5c10e1a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,9 @@ Core and Builtins
Library
-------
+- Issue #19343: Expose FreeBSD-specific APIs in resource module. Original
+ patch by Koobs.
+
- Issue #19506: Use a memoryview to avoid a data copy when piping data
to stdin within subprocess.Popen.communicate. 5-10% less cpu usage.
diff --git a/Modules/resource.c b/Modules/resource.c
index c12ce34..3a1cf09 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -424,6 +424,20 @@ PyInit_resource(void)
PyModule_AddIntMacro(m, RUSAGE_THREAD);
#endif
+/* FreeBSD specific */
+
+#ifdef RLIMIT_SWAP
+ PyModule_AddIntMacro(m, RLIMIT_SWAP);
+#endif
+
+#ifdef RLIMIT_SBSIZE
+ PyModule_AddIntMacro(m, RLIMIT_SBSIZE);
+#endif
+
+#ifdef RLIMIT_NPTS
+ PyModule_AddIntMacro(m, RLIMIT_NPTS);
+#endif
+
#if defined(HAVE_LONG_LONG)
if (sizeof(RLIM_INFINITY) > sizeof(long)) {
v = PyLong_FromLongLong((PY_LONG_LONG) RLIM_INFINITY);