annotate Modules/resource.c @ 27998:e27f58a50737 legacy-trunk

SF bug #690377: Dud footnote reference in distutils docs
author Raymond Hettinger <python@rcn.com>
date Fri, 21 Feb 2003 02:47:09 +0000
parents 0fdfccdfec06
children 871da703e4c0
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"
22899
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
3 #include "structseq.h"
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 #include <sys/resource.h>
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #include <sys/time.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
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
20 PyDoc_STRVAR(struct_rusage__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
21 "struct_rusage: Result from getrusage.\n\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
22 "This object may be accessed either as a tuple of\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
23 " (utime,stime,maxrss,ixrss,idrss,isrss,minflt,majflt,\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
24 " nswap,inblock,oublock,msgsnd,msgrcv,nsignals,nvcsw,nivcsw)\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23250
diff changeset
25 "or via the attributes ru_utime, ru_stime, ru_maxrss, and so on.");
22899
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
26
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
27 static PyStructSequence_Field struct_rusage_fields[] = {
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
28 {"ru_utime", "user time used"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
29 {"ru_stime", "system time used"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
30 {"ru_maxrss", "max. resident set size"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
31 {"ru_ixrss", "shared memory size"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
32 {"ru_idrss", "unshared data size"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
33 {"ru_isrss", "unshared stack size"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
34 {"ru_minflt", "page faults not requiring I/O"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
35 {"ru_majflt", "page faults requiring I/O"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
36 {"ru_nswap", "number of swap outs"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
37 {"ru_inblock", "block input operations"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
38 {"ru_oublock", "block output operations"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
39 {"ru_msgsnd", "IPC messages sent"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
40 {"ru_msgrcv", "IPC messages received"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
41 {"ru_nsignals", "signals received"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
42 {"ru_nvcsw", "voluntary context switches"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
43 {"ru_nivcsw", "involuntary context switches"},
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
44 {0}
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
45 };
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
46
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
47 static PyStructSequence_Desc struct_rusage_desc = {
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
48 "resource.struct_rusage", /* name */
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
49 struct_rusage__doc__, /* doc */
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
50 struct_rusage_fields, /* fields */
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
51 16 /* n_in_sequence */
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
52 };
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
53
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
54 static PyTypeObject StructRUsageType;
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
55
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
57 resource_getrusage(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 int who;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 struct rusage ru;
22899
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
61 PyObject *result;
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
62
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
63 if (!PyArg_ParseTuple(args, "i:getrusage", &who))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 if (getrusage(who, &ru) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 if (errno == EINVAL) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 "invalid who parameter");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
22899
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
76 result = PyStructSequence_New(&StructRUsageType);
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
77 if (!result)
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
78 return NULL;
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
79
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
80 PyStructSequence_SET_ITEM(result, 0,
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
81 PyFloat_FromDouble(doubletime(ru.ru_utime)));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
82 PyStructSequence_SET_ITEM(result, 1,
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
83 PyFloat_FromDouble(doubletime(ru.ru_stime)));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
84 PyStructSequence_SET_ITEM(result, 2, PyInt_FromLong(ru.ru_maxrss));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
85 PyStructSequence_SET_ITEM(result, 3, PyInt_FromLong(ru.ru_ixrss));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
86 PyStructSequence_SET_ITEM(result, 4, PyInt_FromLong(ru.ru_idrss));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
87 PyStructSequence_SET_ITEM(result, 5, PyInt_FromLong(ru.ru_isrss));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
88 PyStructSequence_SET_ITEM(result, 6, PyInt_FromLong(ru.ru_minflt));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
89 PyStructSequence_SET_ITEM(result, 7, PyInt_FromLong(ru.ru_majflt));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
90 PyStructSequence_SET_ITEM(result, 8, PyInt_FromLong(ru.ru_nswap));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
91 PyStructSequence_SET_ITEM(result, 9, PyInt_FromLong(ru.ru_inblock));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
92 PyStructSequence_SET_ITEM(result, 10, PyInt_FromLong(ru.ru_oublock));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
93 PyStructSequence_SET_ITEM(result, 11, PyInt_FromLong(ru.ru_msgsnd));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
94 PyStructSequence_SET_ITEM(result, 12, PyInt_FromLong(ru.ru_msgrcv));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
95 PyStructSequence_SET_ITEM(result, 13, PyInt_FromLong(ru.ru_nsignals));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
96 PyStructSequence_SET_ITEM(result, 14, PyInt_FromLong(ru.ru_nvcsw));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
97 PyStructSequence_SET_ITEM(result, 15, PyInt_FromLong(ru.ru_nivcsw));
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
98
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
99 if (PyErr_Occurred()) {
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
100 Py_DECREF(result);
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
101 return NULL;
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
102 }
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
103
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
104 return result;
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
106
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
107
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
109 resource_getrlimit(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 struct rlimit rl;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 int resource;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
113
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
114 if (!PyArg_ParseTuple(args, "i:getrlimit", &resource))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
116
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 if (resource < 0 || resource >= RLIM_NLIMITS) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 "invalid resource specified");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
122
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 if (getrlimit(resource, &rl) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 }
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
127
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
128 #if defined(HAVE_LONG_LONG)
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
129 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
130 return Py_BuildValue("LL",
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
131 (LONG_LONG) rl.rlim_cur,
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
132 (LONG_LONG) rl.rlim_max);
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
133 }
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
134 #endif
25992
0fdfccdfec06 Fix SF #632624, test_resource failure on alpha/64bit
Neal Norwitz <nnorwitz@gmail.com>
parents: 24471
diff changeset
135 return Py_BuildValue("ll", (long) rl.rlim_cur, (long) rl.rlim_max);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 }
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 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
139 resource_setrlimit(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 struct rlimit rl;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 int resource;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
143 PyObject *curobj, *maxobj;
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
144
23250
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
145 if (!PyArg_ParseTuple(args, "i(OO):setrlimit",
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
146 &resource, &curobj, &maxobj))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 return NULL;
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 if (resource < 0 || resource >= RLIM_NLIMITS) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 "invalid resource specified");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
154
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
155 #if !defined(HAVE_LARGEFILE_SUPPORT)
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
156 rl.rlim_cur = PyInt_AsLong(curobj);
23250
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
157 if (rl.rlim_cur == -1 && PyErr_Occurred())
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
158 return NULL;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
159 rl.rlim_max = PyInt_AsLong(maxobj);
23250
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
160 if (rl.rlim_max == -1 && PyErr_Occurred())
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
161 return NULL;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
162 #else
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
163 /* 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
164 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
165 PyLong_AsLongLong(curobj) : PyInt_AsLong(curobj);
23250
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
166 if (rl.rlim_cur == -1 && PyErr_Occurred())
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
167 return NULL;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
168 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
169 PyLong_AsLongLong(maxobj) : PyInt_AsLong(maxobj);
23250
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
170 if (rl.rlim_max == -1 && PyErr_Occurred())
284cfca74df4 Check for overflow errors in setrlimit(),
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 22899
diff changeset
171 return NULL;
9787
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
172 #endif
1beaf9179125 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 6798
diff changeset
173
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 rl.rlim_cur = rl.rlim_cur & RLIM_INFINITY;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 rl.rlim_max = rl.rlim_max & RLIM_INFINITY;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 if (setrlimit(resource, &rl) == -1) {
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 if (errno == EINVAL)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 "current limit exceeds maximum limit");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 else if (errno == EPERM)
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 PyErr_SetString(PyExc_ValueError,
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 "not allowed to raise maximum limit");
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 else
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 PyErr_SetFromErrno(ResourceError);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 Py_INCREF(Py_None);
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 return Py_None;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
190
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 static PyObject *
13501
ca32ff7a067e ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
192 resource_getpagesize(PyObject *self, PyObject *args)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 {
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 9787
diff changeset
194 if (!PyArg_ParseTuple(args, ":getpagesize"))
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 return NULL;
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 return Py_BuildValue("i", getpagesize());
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 }
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
198
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 /* List of functions */
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 static struct PyMethodDef
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 resource_methods[] = {
21757
40631ae74b17 Patch #477750: Use METH_ constants in Modules.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
203 {"getrusage", resource_getrusage, METH_VARARGS},
40631ae74b17 Patch #477750: Use METH_ constants in Modules.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
204 {"getrlimit", resource_getrlimit, METH_VARARGS},
40631ae74b17 Patch #477750: Use METH_ constants in Modules.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
205 {"setrlimit", resource_setrlimit, METH_VARARGS},
40631ae74b17 Patch #477750: Use METH_ constants in Modules.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
206 {"getpagesize", resource_getpagesize, METH_VARARGS},
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 {NULL, NULL} /* sentinel */
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
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
210
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 /* Module initialization */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 23832
diff changeset
213 PyMODINIT_FUNC
19935
619a2d6b5ea9 [Patch #462255, from Jason Tishler] Re-enables building the resouce
Andrew M. Kuchling <amk@amk.ca>
parents: 14375
diff changeset
214 initresource(void)
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 {
22502
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
216 PyObject *m, *v;
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
217
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 /* Create the module and add the functions */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 m = Py_InitModule("resource", resource_methods);
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 /* Add some symbolic constants to the module */
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
222 if (ResourceError == NULL) {
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
223 ResourceError = PyErr_NewException("resource.error",
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
224 NULL, NULL);
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
225 }
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
226 Py_INCREF(ResourceError);
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
227 PyModule_AddObject(m, "error", ResourceError);
22899
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
228 PyStructSequence_InitType(&StructRUsageType, &struct_rusage_desc);
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
229 PyModule_AddObject(m, "struct_rusage",
c0d7b5788cbe Patch #512005: getrusage() returns struct-like object.
Martin v. Löwis <martin@v.loewis.de>
parents: 22502
diff changeset
230 (PyObject*) &StructRUsageType);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
231
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 /* insert constants */
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 #ifdef RLIMIT_CPU
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
234 PyModule_AddIntConstant(m, "RLIMIT_CPU", RLIMIT_CPU);
4770
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
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 #ifdef RLIMIT_FSIZE
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
238 PyModule_AddIntConstant(m, "RLIMIT_FSIZE", RLIMIT_FSIZE);
4770
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 RLIMIT_DATA
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
242 PyModule_AddIntConstant(m, "RLIMIT_DATA", RLIMIT_DATA);
4770
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
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 #ifdef RLIMIT_STACK
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
246 PyModule_AddIntConstant(m, "RLIMIT_STACK", RLIMIT_STACK);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
248
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 #ifdef RLIMIT_CORE
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
250 PyModule_AddIntConstant(m, "RLIMIT_CORE", RLIMIT_CORE);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
252
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 #ifdef RLIMIT_NOFILE
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
254 PyModule_AddIntConstant(m, "RLIMIT_NOFILE", RLIMIT_NOFILE);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
256
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 #ifdef RLIMIT_OFILE
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
258 PyModule_AddIntConstant(m, "RLIMIT_OFILE", RLIMIT_OFILE);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
260
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 #ifdef RLIMIT_VMEM
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
262 PyModule_AddIntConstant(m, "RLIMIT_VMEM", RLIMIT_VMEM);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
264
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 #ifdef RLIMIT_AS
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
266 PyModule_AddIntConstant(m, "RLIMIT_AS", RLIMIT_AS);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
268
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 #ifdef RLIMIT_RSS
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
270 PyModule_AddIntConstant(m, "RLIMIT_RSS", RLIMIT_RSS);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
272
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 #ifdef RLIMIT_NPROC
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
274 PyModule_AddIntConstant(m, "RLIMIT_NPROC", RLIMIT_NPROC);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
275 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
276
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 #ifdef RLIMIT_MEMLOCK
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
278 PyModule_AddIntConstant(m, "RLIMIT_MEMLOCK", RLIMIT_MEMLOCK);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
280
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 #ifdef RUSAGE_SELF
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
282 PyModule_AddIntConstant(m, "RUSAGE_SELF", RUSAGE_SELF);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
284
6798
0ba50c7429e5 Typo: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
Guido van Rossum <guido@python.org>
parents: 6536
diff changeset
285 #ifdef RUSAGE_CHILDREN
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
286 PyModule_AddIntConstant(m, "RUSAGE_CHILDREN", RUSAGE_CHILDREN);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 #endif
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
288
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 #ifdef RUSAGE_BOTH
21943
9c8323abf1db Use PyModule_AddIntConstant() instead of creating a private helper function.
Fred Drake <fdrake@acm.org>
parents: 21757
diff changeset
290 PyModule_AddIntConstant(m, "RUSAGE_BOTH", RUSAGE_BOTH);
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
291 #endif
22502
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
292
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
293 #if defined(HAVE_LONG_LONG)
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
294 if (sizeof(RLIM_INFINITY) > sizeof(long)) {
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
295 v = PyLong_FromLongLong((LONG_LONG) RLIM_INFINITY);
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
296 } else
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
297 #endif
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
298 {
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
299 v = PyInt_FromLong((long) RLIM_INFINITY);
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
300 }
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
301 if (v) {
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
302 PyModule_AddObject(m, "RLIM_INFINITY", v);
5b8be8611d8c Expose RLIM_INFINITY constant. Closes SF patch 489066.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 21943
diff changeset
303 }
4770
72108faa56bf Added Jeremy's resource module.
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 }