17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ci#if defined(HAVE_GETRUSAGE)
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ciPyDoc_STRVAR(resource_getrusage__doc__,
87db96d56Sopenharmony_ci"getrusage($module, who, /)\n"
97db96d56Sopenharmony_ci"--\n"
107db96d56Sopenharmony_ci"\n");
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci#define RESOURCE_GETRUSAGE_METHODDEF    \
137db96d56Sopenharmony_ci    {"getrusage", (PyCFunction)resource_getrusage, METH_O, resource_getrusage__doc__},
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_cistatic PyObject *
167db96d56Sopenharmony_ciresource_getrusage_impl(PyObject *module, int who);
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_cistatic PyObject *
197db96d56Sopenharmony_ciresource_getrusage(PyObject *module, PyObject *arg)
207db96d56Sopenharmony_ci{
217db96d56Sopenharmony_ci    PyObject *return_value = NULL;
227db96d56Sopenharmony_ci    int who;
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    who = _PyLong_AsInt(arg);
257db96d56Sopenharmony_ci    if (who == -1 && PyErr_Occurred()) {
267db96d56Sopenharmony_ci        goto exit;
277db96d56Sopenharmony_ci    }
287db96d56Sopenharmony_ci    return_value = resource_getrusage_impl(module, who);
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ciexit:
317db96d56Sopenharmony_ci    return return_value;
327db96d56Sopenharmony_ci}
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci#endif /* defined(HAVE_GETRUSAGE) */
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ciPyDoc_STRVAR(resource_getrlimit__doc__,
377db96d56Sopenharmony_ci"getrlimit($module, resource, /)\n"
387db96d56Sopenharmony_ci"--\n"
397db96d56Sopenharmony_ci"\n");
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci#define RESOURCE_GETRLIMIT_METHODDEF    \
427db96d56Sopenharmony_ci    {"getrlimit", (PyCFunction)resource_getrlimit, METH_O, resource_getrlimit__doc__},
437db96d56Sopenharmony_ci
447db96d56Sopenharmony_cistatic PyObject *
457db96d56Sopenharmony_ciresource_getrlimit_impl(PyObject *module, int resource);
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_cistatic PyObject *
487db96d56Sopenharmony_ciresource_getrlimit(PyObject *module, PyObject *arg)
497db96d56Sopenharmony_ci{
507db96d56Sopenharmony_ci    PyObject *return_value = NULL;
517db96d56Sopenharmony_ci    int resource;
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci    resource = _PyLong_AsInt(arg);
547db96d56Sopenharmony_ci    if (resource == -1 && PyErr_Occurred()) {
557db96d56Sopenharmony_ci        goto exit;
567db96d56Sopenharmony_ci    }
577db96d56Sopenharmony_ci    return_value = resource_getrlimit_impl(module, resource);
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ciexit:
607db96d56Sopenharmony_ci    return return_value;
617db96d56Sopenharmony_ci}
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ciPyDoc_STRVAR(resource_setrlimit__doc__,
647db96d56Sopenharmony_ci"setrlimit($module, resource, limits, /)\n"
657db96d56Sopenharmony_ci"--\n"
667db96d56Sopenharmony_ci"\n");
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ci#define RESOURCE_SETRLIMIT_METHODDEF    \
697db96d56Sopenharmony_ci    {"setrlimit", _PyCFunction_CAST(resource_setrlimit), METH_FASTCALL, resource_setrlimit__doc__},
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cistatic PyObject *
727db96d56Sopenharmony_ciresource_setrlimit_impl(PyObject *module, int resource, PyObject *limits);
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_cistatic PyObject *
757db96d56Sopenharmony_ciresource_setrlimit(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
767db96d56Sopenharmony_ci{
777db96d56Sopenharmony_ci    PyObject *return_value = NULL;
787db96d56Sopenharmony_ci    int resource;
797db96d56Sopenharmony_ci    PyObject *limits;
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("setrlimit", nargs, 2, 2)) {
827db96d56Sopenharmony_ci        goto exit;
837db96d56Sopenharmony_ci    }
847db96d56Sopenharmony_ci    resource = _PyLong_AsInt(args[0]);
857db96d56Sopenharmony_ci    if (resource == -1 && PyErr_Occurred()) {
867db96d56Sopenharmony_ci        goto exit;
877db96d56Sopenharmony_ci    }
887db96d56Sopenharmony_ci    limits = args[1];
897db96d56Sopenharmony_ci    return_value = resource_setrlimit_impl(module, resource, limits);
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ciexit:
927db96d56Sopenharmony_ci    return return_value;
937db96d56Sopenharmony_ci}
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ci#if defined(HAVE_PRLIMIT)
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ciPyDoc_STRVAR(resource_prlimit__doc__,
987db96d56Sopenharmony_ci"prlimit(pid, resource, [limits])");
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ci#define RESOURCE_PRLIMIT_METHODDEF    \
1017db96d56Sopenharmony_ci    {"prlimit", (PyCFunction)resource_prlimit, METH_VARARGS, resource_prlimit__doc__},
1027db96d56Sopenharmony_ci
1037db96d56Sopenharmony_cistatic PyObject *
1047db96d56Sopenharmony_ciresource_prlimit_impl(PyObject *module, pid_t pid, int resource,
1057db96d56Sopenharmony_ci                      int group_right_1, PyObject *limits);
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_cistatic PyObject *
1087db96d56Sopenharmony_ciresource_prlimit(PyObject *module, PyObject *args)
1097db96d56Sopenharmony_ci{
1107db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1117db96d56Sopenharmony_ci    pid_t pid;
1127db96d56Sopenharmony_ci    int resource;
1137db96d56Sopenharmony_ci    int group_right_1 = 0;
1147db96d56Sopenharmony_ci    PyObject *limits = NULL;
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ci    switch (PyTuple_GET_SIZE(args)) {
1177db96d56Sopenharmony_ci        case 2:
1187db96d56Sopenharmony_ci            if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "i:prlimit", &pid, &resource)) {
1197db96d56Sopenharmony_ci                goto exit;
1207db96d56Sopenharmony_ci            }
1217db96d56Sopenharmony_ci            break;
1227db96d56Sopenharmony_ci        case 3:
1237db96d56Sopenharmony_ci            if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "iO:prlimit", &pid, &resource, &limits)) {
1247db96d56Sopenharmony_ci                goto exit;
1257db96d56Sopenharmony_ci            }
1267db96d56Sopenharmony_ci            group_right_1 = 1;
1277db96d56Sopenharmony_ci            break;
1287db96d56Sopenharmony_ci        default:
1297db96d56Sopenharmony_ci            PyErr_SetString(PyExc_TypeError, "resource.prlimit requires 2 to 3 arguments");
1307db96d56Sopenharmony_ci            goto exit;
1317db96d56Sopenharmony_ci    }
1327db96d56Sopenharmony_ci    return_value = resource_prlimit_impl(module, pid, resource, group_right_1, limits);
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ciexit:
1357db96d56Sopenharmony_ci    return return_value;
1367db96d56Sopenharmony_ci}
1377db96d56Sopenharmony_ci
1387db96d56Sopenharmony_ci#endif /* defined(HAVE_PRLIMIT) */
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ciPyDoc_STRVAR(resource_getpagesize__doc__,
1417db96d56Sopenharmony_ci"getpagesize($module, /)\n"
1427db96d56Sopenharmony_ci"--\n"
1437db96d56Sopenharmony_ci"\n");
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ci#define RESOURCE_GETPAGESIZE_METHODDEF    \
1467db96d56Sopenharmony_ci    {"getpagesize", (PyCFunction)resource_getpagesize, METH_NOARGS, resource_getpagesize__doc__},
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_cistatic int
1497db96d56Sopenharmony_ciresource_getpagesize_impl(PyObject *module);
1507db96d56Sopenharmony_ci
1517db96d56Sopenharmony_cistatic PyObject *
1527db96d56Sopenharmony_ciresource_getpagesize(PyObject *module, PyObject *Py_UNUSED(ignored))
1537db96d56Sopenharmony_ci{
1547db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1557db96d56Sopenharmony_ci    int _return_value;
1567db96d56Sopenharmony_ci
1577db96d56Sopenharmony_ci    _return_value = resource_getpagesize_impl(module);
1587db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
1597db96d56Sopenharmony_ci        goto exit;
1607db96d56Sopenharmony_ci    }
1617db96d56Sopenharmony_ci    return_value = PyLong_FromLong((long)_return_value);
1627db96d56Sopenharmony_ci
1637db96d56Sopenharmony_ciexit:
1647db96d56Sopenharmony_ci    return return_value;
1657db96d56Sopenharmony_ci}
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci#ifndef RESOURCE_GETRUSAGE_METHODDEF
1687db96d56Sopenharmony_ci    #define RESOURCE_GETRUSAGE_METHODDEF
1697db96d56Sopenharmony_ci#endif /* !defined(RESOURCE_GETRUSAGE_METHODDEF) */
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci#ifndef RESOURCE_PRLIMIT_METHODDEF
1727db96d56Sopenharmony_ci    #define RESOURCE_PRLIMIT_METHODDEF
1737db96d56Sopenharmony_ci#endif /* !defined(RESOURCE_PRLIMIT_METHODDEF) */
1747db96d56Sopenharmony_ci/*[clinic end generated code: output=7c57d4f3688d3f07 input=a9049054013a1b77]*/
175