blob: 7efdbe48d6019b52f232c120dca3999470e64906 [file] [log] [blame]
Serhiy Storchaka19897632017-03-12 13:08:30 +02001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(resource_getrusage__doc__,
6"getrusage($module, who, /)\n"
7"--\n"
8"\n");
9
10#define RESOURCE_GETRUSAGE_METHODDEF \
11 {"getrusage", (PyCFunction)resource_getrusage, METH_O, resource_getrusage__doc__},
12
13static PyObject *
14resource_getrusage_impl(PyObject *module, int who);
15
16static PyObject *
17resource_getrusage(PyObject *module, PyObject *arg)
18{
19 PyObject *return_value = NULL;
20 int who;
21
22 if (!PyArg_Parse(arg, "i:getrusage", &who)) {
23 goto exit;
24 }
25 return_value = resource_getrusage_impl(module, who);
26
27exit:
28 return return_value;
29}
30
31PyDoc_STRVAR(resource_getrlimit__doc__,
32"getrlimit($module, resource, /)\n"
33"--\n"
34"\n");
35
36#define RESOURCE_GETRLIMIT_METHODDEF \
37 {"getrlimit", (PyCFunction)resource_getrlimit, METH_O, resource_getrlimit__doc__},
38
39static PyObject *
40resource_getrlimit_impl(PyObject *module, int resource);
41
42static PyObject *
43resource_getrlimit(PyObject *module, PyObject *arg)
44{
45 PyObject *return_value = NULL;
46 int resource;
47
48 if (!PyArg_Parse(arg, "i:getrlimit", &resource)) {
49 goto exit;
50 }
51 return_value = resource_getrlimit_impl(module, resource);
52
53exit:
54 return return_value;
55}
56
57PyDoc_STRVAR(resource_setrlimit__doc__,
58"setrlimit($module, resource, limits, /)\n"
59"--\n"
60"\n");
61
62#define RESOURCE_SETRLIMIT_METHODDEF \
63 {"setrlimit", (PyCFunction)resource_setrlimit, METH_FASTCALL, resource_setrlimit__doc__},
64
65static PyObject *
66resource_setrlimit_impl(PyObject *module, int resource, PyObject *limits);
67
68static PyObject *
69resource_setrlimit(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
70{
71 PyObject *return_value = NULL;
72 int resource;
73 PyObject *limits;
74
Sylvain74453812017-06-10 06:51:48 +020075 if (!_PyArg_NoStackKeywords("setrlimit", kwnames)) {
Serhiy Storchaka19897632017-03-12 13:08:30 +020076 goto exit;
77 }
78
Sylvain74453812017-06-10 06:51:48 +020079 if (!_PyArg_ParseStack(args, nargs, "iO:setrlimit",
80 &resource, &limits)) {
Serhiy Storchaka19897632017-03-12 13:08:30 +020081 goto exit;
82 }
83 return_value = resource_setrlimit_impl(module, resource, limits);
84
85exit:
86 return return_value;
87}
88
89#if defined(HAVE_PRLIMIT)
90
91PyDoc_STRVAR(resource_prlimit__doc__,
92"prlimit(pid, resource, [limits])");
93
94#define RESOURCE_PRLIMIT_METHODDEF \
95 {"prlimit", (PyCFunction)resource_prlimit, METH_VARARGS, resource_prlimit__doc__},
96
97static PyObject *
98resource_prlimit_impl(PyObject *module, pid_t pid, int resource,
99 int group_right_1, PyObject *limits);
100
101static PyObject *
102resource_prlimit(PyObject *module, PyObject *args)
103{
104 PyObject *return_value = NULL;
105 pid_t pid;
106 int resource;
107 int group_right_1 = 0;
108 PyObject *limits = NULL;
109
110 switch (PyTuple_GET_SIZE(args)) {
111 case 2:
112 if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "i:prlimit", &pid, &resource)) {
113 goto exit;
114 }
115 break;
116 case 3:
117 if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "iO:prlimit", &pid, &resource, &limits)) {
118 goto exit;
119 }
120 group_right_1 = 1;
121 break;
122 default:
123 PyErr_SetString(PyExc_TypeError, "resource.prlimit requires 2 to 3 arguments");
124 goto exit;
125 }
126 return_value = resource_prlimit_impl(module, pid, resource, group_right_1, limits);
127
128exit:
129 return return_value;
130}
131
132#endif /* defined(HAVE_PRLIMIT) */
133
134PyDoc_STRVAR(resource_getpagesize__doc__,
135"getpagesize($module, /)\n"
136"--\n"
137"\n");
138
139#define RESOURCE_GETPAGESIZE_METHODDEF \
140 {"getpagesize", (PyCFunction)resource_getpagesize, METH_NOARGS, resource_getpagesize__doc__},
141
142static int
143resource_getpagesize_impl(PyObject *module);
144
145static PyObject *
146resource_getpagesize(PyObject *module, PyObject *Py_UNUSED(ignored))
147{
148 PyObject *return_value = NULL;
149 int _return_value;
150
151 _return_value = resource_getpagesize_impl(module);
152 if ((_return_value == -1) && PyErr_Occurred()) {
153 goto exit;
154 }
155 return_value = PyLong_FromLong((long)_return_value);
156
157exit:
158 return return_value;
159}
160
161#ifndef RESOURCE_PRLIMIT_METHODDEF
162 #define RESOURCE_PRLIMIT_METHODDEF
163#endif /* !defined(RESOURCE_PRLIMIT_METHODDEF) */
Sylvain74453812017-06-10 06:51:48 +0200164/*[clinic end generated code: output=158aace6e532949e input=a9049054013a1b77]*/