blob: cd9fae1df0ae211f9ebc87f47862951f5006c0d9 [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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +020063 {"setrlimit", (PyCFunction)(void(*)(void))resource_setrlimit, METH_FASTCALL, resource_setrlimit__doc__},
Serhiy Storchaka19897632017-03-12 13:08:30 +020064
65static PyObject *
66resource_setrlimit_impl(PyObject *module, int resource, PyObject *limits);
67
68static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +020069resource_setrlimit(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka19897632017-03-12 13:08:30 +020070{
71 PyObject *return_value = NULL;
72 int resource;
73 PyObject *limits;
74
Sylvain74453812017-06-10 06:51:48 +020075 if (!_PyArg_ParseStack(args, nargs, "iO:setrlimit",
76 &resource, &limits)) {
Serhiy Storchaka19897632017-03-12 13:08:30 +020077 goto exit;
78 }
79 return_value = resource_setrlimit_impl(module, resource, limits);
80
81exit:
82 return return_value;
83}
84
85#if defined(HAVE_PRLIMIT)
86
87PyDoc_STRVAR(resource_prlimit__doc__,
88"prlimit(pid, resource, [limits])");
89
90#define RESOURCE_PRLIMIT_METHODDEF \
91 {"prlimit", (PyCFunction)resource_prlimit, METH_VARARGS, resource_prlimit__doc__},
92
93static PyObject *
94resource_prlimit_impl(PyObject *module, pid_t pid, int resource,
95 int group_right_1, PyObject *limits);
96
97static PyObject *
98resource_prlimit(PyObject *module, PyObject *args)
99{
100 PyObject *return_value = NULL;
101 pid_t pid;
102 int resource;
103 int group_right_1 = 0;
104 PyObject *limits = NULL;
105
106 switch (PyTuple_GET_SIZE(args)) {
107 case 2:
108 if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "i:prlimit", &pid, &resource)) {
109 goto exit;
110 }
111 break;
112 case 3:
113 if (!PyArg_ParseTuple(args, "" _Py_PARSE_PID "iO:prlimit", &pid, &resource, &limits)) {
114 goto exit;
115 }
116 group_right_1 = 1;
117 break;
118 default:
119 PyErr_SetString(PyExc_TypeError, "resource.prlimit requires 2 to 3 arguments");
120 goto exit;
121 }
122 return_value = resource_prlimit_impl(module, pid, resource, group_right_1, limits);
123
124exit:
125 return return_value;
126}
127
128#endif /* defined(HAVE_PRLIMIT) */
129
130PyDoc_STRVAR(resource_getpagesize__doc__,
131"getpagesize($module, /)\n"
132"--\n"
133"\n");
134
135#define RESOURCE_GETPAGESIZE_METHODDEF \
136 {"getpagesize", (PyCFunction)resource_getpagesize, METH_NOARGS, resource_getpagesize__doc__},
137
138static int
139resource_getpagesize_impl(PyObject *module);
140
141static PyObject *
142resource_getpagesize(PyObject *module, PyObject *Py_UNUSED(ignored))
143{
144 PyObject *return_value = NULL;
145 int _return_value;
146
147 _return_value = resource_getpagesize_impl(module);
148 if ((_return_value == -1) && PyErr_Occurred()) {
149 goto exit;
150 }
151 return_value = PyLong_FromLong((long)_return_value);
152
153exit:
154 return return_value;
155}
156
157#ifndef RESOURCE_PRLIMIT_METHODDEF
158 #define RESOURCE_PRLIMIT_METHODDEF
159#endif /* !defined(RESOURCE_PRLIMIT_METHODDEF) */
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200160/*[clinic end generated code: output=637ed2c42bde5ca6 input=a9049054013a1b77]*/