Kaydet (Commit) 5bb414d1 authored tarafından Christian Heimes's avatar Christian Heimes

Issue #19343: Expose FreeBSD-specific APIs in resource module. Original patch by Koobs.

üst ead8d085
......@@ -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
--------------
......
......@@ -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):
......
......@@ -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.
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment