annotate Modules/resource.c @ 16798:258dcafe2d0b legacy-trunk

Gustavo Niemeyer <niemeyer@conectiva.com>: Fixed recno support (keys are integers rather than strings). Work around DB bug that cause stdin to be closed by rnopen() when the DB file needed to exist but did not (no longer segfaults). This closes SF tracker patch #403445. Also wrapped some long lines and added whitespace around operators -- FLD.
author Fred Drake <fdrake@acm.org>
date Tue, 27 Feb 2001 18:56:46 +0000
parents 6f6f965c5e2d
children 619a2d6b5ea9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6052
1da122718598 Added std copyright notice.
Guido van Rossum <guido@python.org>
parents: 5941
diff changeset
1
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 #include "Python.h"
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 #include <sys/resource.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 #include <sys/time.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #include <unistd.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 #include <string.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 #include <errno.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
6082
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
9 /* On some systems, these aren't in any header file.
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
10 On others they are, with inconsistent prototypes.
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
11 We declare the (default) return type, to shut up gcc -Wall;
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
12 but we can't declare the prototype, to avoid errors
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
13 when the header files declare it different.
d7ca0554795e Different strategy regarding whether to declare getrusage() and
Guido van Rossum <guido@python.org>
parents: 6052
diff changeset
14 Worse, on some Linuxes, getpagesize() returns a size_t... */
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 #define doubletime(TV) ((double)(TV).tv_sec + (TV).tv_usec * 0.000001)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 static PyObject *ResourceError;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
21 resource_getrusage(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 int who;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 struct rusage ru;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
26 if (!PyArg_ParseTuple(args, "i:getrusage", &who))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 if (getrusage(who, &ru) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 if (errno == EINVAL) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 "invalid who parameter");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
38
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 /* Yeah, this 16-tuple is way ugly. It's probably a lot less
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 ugly than a dictionary with keys (or object attributes)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 named things like 'ixrss'.
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 return Py_BuildValue(
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 "ddiiiiiiiiiiiiii",
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 doubletime(ru.ru_utime), /* user time used */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 doubletime(ru.ru_stime), /* system time used */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 ru.ru_maxrss, /* max. resident set size */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 ru.ru_ixrss, /* shared memory size */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 ru.ru_idrss, /* unshared memory size */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 ru.ru_isrss, /* unshared stack size */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 ru.ru_minflt, /* page faults not requiring I/O*/
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 ru.ru_majflt, /* page faults requiring I/O */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 ru.ru_nswap, /* number of swap outs */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 ru.ru_inblock, /* block input operations */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 ru.ru_oublock, /* block output operations */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 ru.ru_msgsnd, /* messages sent */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 ru.ru_msgrcv, /* messages received */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 ru.ru_nsignals, /* signals received */
13620
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13501
diff changeset
59 ru.ru_nvcsw, /* voluntary context switches */
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13501
diff changeset
60 ru.ru_nivcsw /* involuntary context switches */
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 );
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
66 resource_getrlimit(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 struct rlimit rl;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 int resource;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
70
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
71 if (!PyArg_ParseTuple(args, "i:getrlimit", &resource))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
73
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 if (resource < 0 || resource >= RLIM_NLIMITS) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 "invalid resource specified");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
79
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 if (getrlimit(resource, &rl) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 }
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
84
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
85 #if defined(HAVE_LONG_LONG)
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
86 if (sizeof(rl.rlim_cur) > sizeof(long)) {
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
87 return Py_BuildValue("LL",
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
88 (LONG_LONG) rl.rlim_cur,
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
89 (LONG_LONG) rl.rlim_max);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
90 }
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
91 #endif
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
92 return Py_BuildValue("ii", (long) rl.rlim_cur, (long) rl.rlim_max);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
94
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
96 resource_setrlimit(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 struct rlimit rl;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 int resource;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
100 PyObject *curobj, *maxobj;
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
102 if (!PyArg_ParseTuple(args, "i(OO):setrlimit", &resource, &curobj, &maxobj))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 if (resource < 0 || resource >= RLIM_NLIMITS) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 "invalid resource specified");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
111 #if !defined(HAVE_LARGEFILE_SUPPORT)
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
112 rl.rlim_cur = PyInt_AsLong(curobj);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
113 rl.rlim_max = PyInt_AsLong(maxobj);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
114 #else
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
115 /* The limits are probably bigger than a long */
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
116 rl.rlim_cur = PyLong_Check(curobj) ?
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
117 PyLong_AsLongLong(curobj) : PyInt_AsLong(curobj);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
118 rl.rlim_max = PyLong_Check(maxobj) ?
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
119 PyLong_AsLongLong(maxobj) : PyInt_AsLong(maxobj);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
120 #endif
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
121
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 rl.rlim_cur = rl.rlim_cur & RLIM_INFINITY;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 rl.rlim_max = rl.rlim_max & RLIM_INFINITY;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 if (setrlimit(resource, &rl) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 if (errno == EINVAL)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 "current limit exceeds maximum limit");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 else if (errno == EPERM)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 "not allowed to raise maximum limit");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 else
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 Py_INCREF(Py_None);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 return Py_None;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
138
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
140 resource_getpagesize(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
142 if (!PyArg_ParseTuple(args, ":getpagesize"))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 return Py_BuildValue("i", getpagesize());
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
146
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 /* List of functions */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
148
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 static struct PyMethodDef
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 resource_methods[] = {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 {"getrusage", resource_getrusage, 1},
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 {"getrlimit", resource_getrlimit, 1},
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 {"setrlimit", resource_setrlimit, 1},
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 {"getpagesize", resource_getpagesize, 1},
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 {NULL, NULL} /* sentinel */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 };
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
157
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
158
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 /* Module initialization */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
160
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 static void
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 ins(PyObject *dict, char *name, int value)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 PyObject *v = PyInt_FromLong((long) value);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 if (v) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 PyDict_SetItemString(dict, name, v);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 Py_DECREF(v);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 /* errors will be checked by initresource() */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
171
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
172 void initresource(void)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 PyObject *m, *d;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
175
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 /* Create the module and add the functions */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 m = Py_InitModule("resource", resource_methods);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
178
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 /* Add some symbolic constants to the module */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 d = PyModule_GetDict(m);
6367
2c29b8982643 Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents: 6082
diff changeset
181 ResourceError = PyErr_NewException("resource.error", NULL, NULL);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 PyDict_SetItemString(d, "error", ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
183
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 /* insert constants */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 #ifdef RLIMIT_CPU
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 ins(d, "RLIMIT_CPU", RLIMIT_CPU);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
188
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 #ifdef RLIMIT_FSIZE
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 ins(d, "RLIMIT_FSIZE", RLIMIT_FSIZE);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
192
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 #ifdef RLIMIT_DATA
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 ins(d, "RLIMIT_DATA", RLIMIT_DATA);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
196
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 #ifdef RLIMIT_STACK
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 ins(d, "RLIMIT_STACK", RLIMIT_STACK);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
200
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
201 #ifdef RLIMIT_CORE
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 ins(d, "RLIMIT_CORE", RLIMIT_CORE);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
204
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 #ifdef RLIMIT_NOFILE
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 ins(d, "RLIMIT_NOFILE", RLIMIT_NOFILE);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
208
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 #ifdef RLIMIT_OFILE
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 ins(d, "RLIMIT_OFILE", RLIMIT_OFILE);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 #ifdef RLIMIT_VMEM
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 ins(d, "RLIMIT_VMEM", RLIMIT_VMEM);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
216
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 #ifdef RLIMIT_AS
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 ins(d, "RLIMIT_AS", RLIMIT_AS);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
220
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 #ifdef RLIMIT_RSS
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 ins(d, "RLIMIT_RSS", RLIMIT_RSS);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
224
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 #ifdef RLIMIT_NPROC
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 ins(d, "RLIMIT_NPROC", RLIMIT_NPROC);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 #ifdef RLIMIT_MEMLOCK
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 ins(d, "RLIMIT_MEMLOCK", RLIMIT_MEMLOCK);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
232
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 #ifdef RUSAGE_SELF
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 ins(d, "RUSAGE_SELF", RUSAGE_SELF);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
236
6798
0ba50c7429e5 Typo: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
Guido van Rossum <guido@python.org>
parents: 6536
diff changeset
237 #ifdef RUSAGE_CHILDREN
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 ins(d, "RUSAGE_CHILDREN", RUSAGE_CHILDREN);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
240
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 #ifdef RUSAGE_BOTH
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 ins(d, "RUSAGE_BOTH", RUSAGE_BOTH);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 }