annotate Mac/Modules/autoGIL.c @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents fd25030223b0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
1 #include "Python.h"
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
2 #include <CoreFoundation/CFRunLoop.h>
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
3
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
4 /* These macros are defined in Python 2.3 but not 2.2 */
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
5 #ifndef PyMODINIT_FUNC
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
6 #define PyMODINIT_FUNC void
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
7 #endif
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
8 #ifndef PyDoc_STRVAR
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
9 #define PyDoc_STRVAR(Var,Str) static char Var[] = Str
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
10 #endif
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
11
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
12
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
13 #undef AUTOGIL_DEBUG
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
14
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
15 static PyObject *AutoGILError;
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
16
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
17
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
18 static void autoGILCallback(CFRunLoopObserverRef observer,
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
19 CFRunLoopActivity activity,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
20 void *info) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
21 PyThreadState **p_tstate = (PyThreadState **)info;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
22
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
23 switch (activity) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
24 case kCFRunLoopBeforeWaiting:
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
25 /* going to sleep, release GIL */
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
26 #ifdef AUTOGIL_DEBUG
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
27 fprintf(stderr, "going to sleep, release GIL\n");
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
28 #endif
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
29 *p_tstate = PyEval_SaveThread();
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
30 break;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
31 case kCFRunLoopAfterWaiting:
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
32 /* waking up, acquire GIL */
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
33 #ifdef AUTOGIL_DEBUG
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
34 fprintf(stderr, "waking up, acquire GIL\n");
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
35 #endif
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
36 PyEval_RestoreThread(*p_tstate);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
37 *p_tstate = NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
38 break;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
39 default:
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
40 break;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
41 }
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
42 }
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
43
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
44 static void infoRelease(const void *info) {
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
45 /* XXX This should get called when the run loop is deallocated,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
46 but this doesn't seem to happen. So for now: leak. */
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
47 PyMem_Free((void *)info);
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
48 }
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
49
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
50 static PyObject *
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
51 autoGIL_installAutoGIL(PyObject *self)
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
52 {
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
53 PyObject *tstate_dict = PyThreadState_GetDict();
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
54 PyObject *v;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
55 CFRunLoopRef rl;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
56 PyThreadState **p_tstate; /* for use in the info field */
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
57 CFRunLoopObserverContext context = {0, NULL, NULL, NULL, NULL};
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
58 CFRunLoopObserverRef observer;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
59
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
60 if (tstate_dict == NULL)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
61 return NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
62 v = PyDict_GetItemString(tstate_dict, "autoGIL.InstalledAutoGIL");
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
63 if (v != NULL) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
64 /* we've already installed a callback for this thread */
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
65 Py_INCREF(Py_None);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
66 return Py_None;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
67 }
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
68
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
69 rl = CFRunLoopGetCurrent();
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
70 if (rl == NULL) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
71 PyErr_SetString(AutoGILError,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
72 "can't get run loop for current thread");
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
73 return NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
74 }
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
75
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
76 p_tstate = PyMem_Malloc(sizeof(PyThreadState *));
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
77 if (p_tstate == NULL) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
78 PyErr_SetString(PyExc_MemoryError,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
79 "not enough memory to allocate "
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
80 "tstate pointer");
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
81 return NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
82 }
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
83 *p_tstate = NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
84 context.info = (void *)p_tstate;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
85 context.release = infoRelease;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
86
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
87 observer = CFRunLoopObserverCreate(
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
88 NULL,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
89 kCFRunLoopBeforeWaiting | kCFRunLoopAfterWaiting,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
90 1, 0, autoGILCallback, &context);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
91 if (observer == NULL) {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
92 PyErr_SetString(AutoGILError,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
93 "can't create event loop observer");
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
94 return NULL;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
95 }
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
96 CFRunLoopAddObserver(rl, observer, kCFRunLoopDefaultMode);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
97 /* XXX how to check for errors? */
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
98
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
99 /* register that we have installed a callback for this thread */
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
100 if (PyDict_SetItemString(tstate_dict, "autoGIL.InstalledAutoGIL",
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
101 Py_None) < 0)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
102 return NULL;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
103
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
104 Py_INCREF(Py_None);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
105 return Py_None;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
106 }
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
107
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
108 PyDoc_STRVAR(autoGIL_installAutoGIL_doc,
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
109 "installAutoGIL() -> None\n\
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
110 Install an observer callback in the event loop (CFRunLoop) for the\n\
28942
393429a6fa16 fixed typo
Just van Rossum <just@letterror.com>
parents: 28939
diff changeset
111 current thread, that will lock and unlock the Global Interpreter Lock\n\
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
112 (GIL) at appropriate times, allowing other Python threads to run while\n\
28942
393429a6fa16 fixed typo
Just van Rossum <just@letterror.com>
parents: 28939
diff changeset
113 the event loop is idle."
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
114 );
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
115
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
116 static PyMethodDef autoGIL_methods[] = {
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
117 {
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
118 "installAutoGIL",
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
119 (PyCFunction)autoGIL_installAutoGIL,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
120 METH_NOARGS,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
121 autoGIL_installAutoGIL_doc
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
122 },
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
123 { 0, 0, 0, 0 } /* sentinel */
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
124 };
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
125
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
126 PyDoc_STRVAR(autoGIL_docs,
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
127 "The autoGIL module provides a function (installAutoGIL) that\n\
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
128 automatically locks and unlocks Python's Global Interpreter Lock\n\
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
129 when running an event loop."
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
130 );
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
131
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
132 PyMODINIT_FUNC
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
133 initautoGIL(void)
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
134 {
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
135 PyObject *mod;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
136
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
137 if (PyErr_WarnPy3k("In 3.x, the autoGIL module is removed.", 1) < 0)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
138 return;
46967
6df0394abbf1 Add warnings to and deprecated all those Mac modules
Benjamin Peterson <benjamin@python.org>
parents: 28942
diff changeset
139
61463
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
140 mod = Py_InitModule4("autoGIL", autoGIL_methods, autoGIL_docs,
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
141 NULL, PYTHON_API_VERSION);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
142 if (mod == NULL)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
143 return;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
144 AutoGILError = PyErr_NewException("autoGIL.AutoGILError",
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
145 PyExc_Exception, NULL);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
146 if (AutoGILError == NULL)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
147 return;
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
148 Py_INCREF(AutoGILError);
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
149 if (PyModule_AddObject(mod, "AutoGILError",
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
150 AutoGILError) < 0)
fd25030223b0 Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents: 46967
diff changeset
151 return;
28939
4756fa538560 Short and sweet module doing something very useful: for event loop
Just van Rossum <just@letterror.com>
parents:
diff changeset
152 }