Mercurial > cpython-lru_cache-weakref
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 |
| 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 } |
