Mercurial > cpython-lru_cache-weakref
annotate Modules/_multiprocessing/multiprocessing.c @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 49e82c885d6b |
| children | 4a27b5ab2710 |
| rev | line source |
|---|---|
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
1 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
2 * Extension module used by multiprocessing package |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
3 * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
4 * multiprocessing.c |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
5 * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
6 * Copyright (c) 2006-2008, R Oudkerk --- see COPYING.txt |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
7 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
8 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
9 #include "multiprocessing.h" |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
10 |
|
73962
49e82c885d6b
Issue #4028: Make multiprocessing build on SunOS.
Charles-François Natali <neologix@free.fr>
parents:
72435
diff
changeset
|
11 #if (defined(CMSG_LEN) && defined(SCM_RIGHTS)) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
12 #define HAVE_FD_TRANSFER 1 |
|
52902
d3887dfe661f
Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47698
diff
changeset
|
13 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
14 #define HAVE_FD_TRANSFER 0 |
|
52902
d3887dfe661f
Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47698
diff
changeset
|
15 #endif |
|
d3887dfe661f
Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47698
diff
changeset
|
16 |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
17 PyObject *create_win32_namespace(void); |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
18 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
19 PyObject *pickle_dumps, *pickle_loads, *pickle_protocol; |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
20 PyObject *ProcessError, *BufferTooShort; |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
21 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
22 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
23 * Function which raises exceptions based on error codes |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
24 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
25 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
26 PyObject * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
27 mp_SetError(PyObject *Type, int num) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
28 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
29 switch (num) { |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
30 #ifdef MS_WINDOWS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
31 case MP_STANDARD_ERROR: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
32 if (Type == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
33 Type = PyExc_WindowsError; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
34 PyErr_SetExcFromWindowsErr(Type, 0); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
35 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
36 case MP_SOCKET_ERROR: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
37 if (Type == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
38 Type = PyExc_WindowsError; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
39 PyErr_SetExcFromWindowsErr(Type, WSAGetLastError()); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
40 break; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
41 #else /* !MS_WINDOWS */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
42 case MP_STANDARD_ERROR: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
43 case MP_SOCKET_ERROR: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
44 if (Type == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
45 Type = PyExc_OSError; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
46 PyErr_SetFromErrno(Type); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
47 break; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
48 #endif /* !MS_WINDOWS */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
49 case MP_MEMORY_ERROR: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
50 PyErr_NoMemory(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
51 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
52 case MP_END_OF_FILE: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
53 PyErr_SetNone(PyExc_EOFError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
54 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
55 case MP_EARLY_END_OF_FILE: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
56 PyErr_SetString(PyExc_IOError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
57 "got end of file during message"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
58 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
59 case MP_BAD_MESSAGE_LENGTH: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
60 PyErr_SetString(PyExc_IOError, "bad message length"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
61 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
62 case MP_EXCEPTION_HAS_BEEN_SET: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
63 break; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
64 default: |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
65 PyErr_Format(PyExc_RuntimeError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
66 "unkown error number %d", num); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
67 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
68 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
69 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
70 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
71 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
72 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
73 * Windows only |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
74 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
75 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
76 #ifdef MS_WINDOWS |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
77 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
78 /* On Windows we set an event to signal Ctrl-C; compare with timemodule.c */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
79 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
80 HANDLE sigint_event = NULL; |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
81 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
82 static BOOL WINAPI |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
83 ProcessingCtrlHandler(DWORD dwCtrlType) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
84 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
85 SetEvent(sigint_event); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
86 return FALSE; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
87 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
88 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
89 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
90 * Unix only |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
91 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
92 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
93 #else /* !MS_WINDOWS */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
94 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
95 #if HAVE_FD_TRANSFER |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
96 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
97 /* Functions for transferring file descriptors between processes. |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
98 Reimplements some of the functionality of the fdcred |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
99 module at http://www.mca-ltd.com/resources/fdcred_1.tgz. */ |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
100 /* Based in http://resin.csoft.net/cgi-bin/man.cgi?section=3&topic=CMSG_DATA */ |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
101 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
102 static PyObject * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
103 multiprocessing_sendfd(PyObject *self, PyObject *args) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
104 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
105 int conn, fd, res; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
106 struct iovec dummy_iov; |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
107 char dummy_char; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
108 struct msghdr msg; |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
109 struct cmsghdr *cmsg; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
110 union { |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
111 struct cmsghdr hdr; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
112 unsigned char buf[CMSG_SPACE(sizeof(int))]; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
113 } cmsgbuf; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
114 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
115 if (!PyArg_ParseTuple(args, "ii", &conn, &fd)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
116 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
117 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
118 dummy_iov.iov_base = &dummy_char; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
119 dummy_iov.iov_len = 1; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
120 |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
121 memset(&msg, 0, sizeof(msg)); |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
122 msg.msg_control = &cmsgbuf.buf; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
123 msg.msg_controllen = sizeof(cmsgbuf.buf); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
124 msg.msg_iov = &dummy_iov; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
125 msg.msg_iovlen = 1; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
126 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
127 cmsg = CMSG_FIRSTHDR(&msg); |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
128 cmsg->cmsg_len = CMSG_LEN(sizeof(int)); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
129 cmsg->cmsg_level = SOL_SOCKET; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
130 cmsg->cmsg_type = SCM_RIGHTS; |
|
72051
5b2f357989bb
Issue #11657: Fix sending file descriptors over 255 over a multiprocessing Pipe.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65495
diff
changeset
|
131 * (int *) CMSG_DATA(cmsg) = fd; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
132 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
133 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
134 res = sendmsg(conn, &msg, 0); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
135 Py_END_ALLOW_THREADS |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
136 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
137 if (res < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
138 return PyErr_SetFromErrno(PyExc_OSError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
139 Py_RETURN_NONE; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
140 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
141 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
142 static PyObject * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
143 multiprocessing_recvfd(PyObject *self, PyObject *args) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
144 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
145 int conn, fd, res; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
146 char dummy_char; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
147 struct iovec dummy_iov; |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
148 struct msghdr msg = {0}; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
149 struct cmsghdr *cmsg; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
150 union { |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
151 struct cmsghdr hdr; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
152 unsigned char buf[CMSG_SPACE(sizeof(int))]; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
153 } cmsgbuf; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
154 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
155 if (!PyArg_ParseTuple(args, "i", &conn)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
156 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
157 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
158 dummy_iov.iov_base = &dummy_char; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
159 dummy_iov.iov_len = 1; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
160 |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
161 memset(&msg, 0, sizeof(msg)); |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
162 msg.msg_control = &cmsgbuf.buf; |
|
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
163 msg.msg_controllen = sizeof(cmsgbuf.buf); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
164 msg.msg_iov = &dummy_iov; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
165 msg.msg_iovlen = 1; |
|
72332
0f50b8379614
Close #12950: multiprocessing "test_fd_transfer" fails under OpenIndiana
Jesus Cea <jcea@jcea.es>
parents:
72051
diff
changeset
|
166 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
167 cmsg = CMSG_FIRSTHDR(&msg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
168 cmsg->cmsg_level = SOL_SOCKET; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
169 cmsg->cmsg_type = SCM_RIGHTS; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
170 cmsg->cmsg_len = CMSG_LEN(sizeof(int)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
171 msg.msg_controllen = cmsg->cmsg_len; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
172 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
173 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
174 res = recvmsg(conn, &msg, 0); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
175 Py_END_ALLOW_THREADS |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
176 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
177 if (res < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
178 return PyErr_SetFromErrno(PyExc_OSError); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
179 |
|
72435
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
180 if (msg.msg_controllen < CMSG_LEN(sizeof(int)) || |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
181 (cmsg = CMSG_FIRSTHDR(&msg)) == NULL || |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
182 cmsg->cmsg_level != SOL_SOCKET || |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
183 cmsg->cmsg_type != SCM_RIGHTS || |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
184 cmsg->cmsg_len < CMSG_LEN(sizeof(int))) { |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
185 /* If at least one control message is present, there should be |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
186 no room for any further data in the buffer. */ |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
187 PyErr_SetString(PyExc_RuntimeError, "No file descriptor received"); |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
188 return NULL; |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
189 } |
|
447770470d00
Close #13022: _multiprocessing.recvfd() doesn't check that file descriptor was actually received
Jesus Cea <jcea@jcea.es>
parents:
72332
diff
changeset
|
190 |
|
72051
5b2f357989bb
Issue #11657: Fix sending file descriptors over 255 over a multiprocessing Pipe.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65495
diff
changeset
|
191 fd = * (int *) CMSG_DATA(cmsg); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
192 return Py_BuildValue("i", fd); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
193 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
194 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
195 #endif /* HAVE_FD_TRANSFER */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
196 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
197 #endif /* !MS_WINDOWS */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
198 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
199 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
200 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
201 * All platforms |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
202 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
203 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
204 static PyObject* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
205 multiprocessing_address_of_buffer(PyObject *self, PyObject *obj) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
206 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
207 void *buffer; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
208 Py_ssize_t buffer_len; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
209 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
210 if (PyObject_AsWriteBuffer(obj, &buffer, &buffer_len) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
211 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
212 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
213 return Py_BuildValue("N" F_PY_SSIZE_T, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
214 PyLong_FromVoidPtr(buffer), buffer_len); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
215 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
216 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
217 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
218 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
219 * Function table |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
220 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
221 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
222 static PyMethodDef module_methods[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
223 {"address_of_buffer", multiprocessing_address_of_buffer, METH_O, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
224 "address_of_buffer(obj) -> int\n" |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
225 "Return address of obj assuming obj supports buffer inteface"}, |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
226 #if HAVE_FD_TRANSFER |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
227 {"sendfd", multiprocessing_sendfd, METH_VARARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
228 "sendfd(sockfd, fd) -> None\n" |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
229 "Send file descriptor given by fd over the unix domain socket\n" |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
230 "whose file decriptor is sockfd"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
231 {"recvfd", multiprocessing_recvfd, METH_VARARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
232 "recvfd(sockfd) -> fd\n" |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
233 "Receive a file descriptor over a unix domain socket\n" |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
234 "whose file decriptor is sockfd"}, |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
235 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
236 {NULL} |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
237 }; |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
238 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
239 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
240 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
241 * Initialize |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
242 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
243 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
244 static struct PyModuleDef multiprocessing_module = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
245 PyModuleDef_HEAD_INIT, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
246 "_multiprocessing", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
247 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
248 -1, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
249 module_methods, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
250 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
251 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
252 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
253 NULL |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
254 }; |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
255 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
256 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
257 PyMODINIT_FUNC |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
258 PyInit__multiprocessing(void) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
259 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
260 PyObject *module, *temp, *value; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
261 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
262 /* Initialize module */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
263 module = PyModule_Create(&multiprocessing_module); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
264 if (!module) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
265 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
266 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
267 /* Get copy of objects from pickle */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
268 temp = PyImport_ImportModule(PICKLE_MODULE); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
269 if (!temp) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
270 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
271 pickle_dumps = PyObject_GetAttrString(temp, "dumps"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
272 pickle_loads = PyObject_GetAttrString(temp, "loads"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
273 pickle_protocol = PyObject_GetAttrString(temp, "HIGHEST_PROTOCOL"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
274 Py_XDECREF(temp); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
275 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
276 /* Get copy of BufferTooShort */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
277 temp = PyImport_ImportModule("multiprocessing"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
278 if (!temp) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
279 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
280 BufferTooShort = PyObject_GetAttrString(temp, "BufferTooShort"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
281 Py_XDECREF(temp); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
282 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
283 /* Add connection type to module */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
284 if (PyType_Ready(&ConnectionType) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
285 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
286 Py_INCREF(&ConnectionType); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
287 PyModule_AddObject(module, "Connection", (PyObject*)&ConnectionType); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
288 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
289 #if defined(MS_WINDOWS) || \ |
|
57491
3d77d7c16c90
Merged revisions 76566 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
52902
diff
changeset
|
290 (defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED)) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
291 /* Add SemLock type to module */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
292 if (PyType_Ready(&SemLockType) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
293 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
294 Py_INCREF(&SemLockType); |
|
65426
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
295 { |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
296 PyObject *py_sem_value_max; |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
297 /* Some systems define SEM_VALUE_MAX as an unsigned value that |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
298 * causes it to be negative when used as an int (NetBSD). */ |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
299 if ((int)(SEM_VALUE_MAX) < 0) |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
300 py_sem_value_max = PyLong_FromLong(INT_MAX); |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
301 else |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
302 py_sem_value_max = PyLong_FromLong(SEM_VALUE_MAX); |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
303 if (py_sem_value_max == NULL) |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
304 return NULL; |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
305 PyDict_SetItemString(SemLockType.tp_dict, "SEM_VALUE_MAX", |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
306 py_sem_value_max); |
|
eabc5c53f134
Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined
Gregory P. Smith <greg@mad-scientist.com>
parents:
61466
diff
changeset
|
307 } |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
308 PyModule_AddObject(module, "SemLock", (PyObject*)&SemLockType); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
309 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
310 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
311 #ifdef MS_WINDOWS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
312 /* Add PipeConnection to module */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
313 if (PyType_Ready(&PipeConnectionType) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
314 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
315 Py_INCREF(&PipeConnectionType); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
316 PyModule_AddObject(module, "PipeConnection", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
317 (PyObject*)&PipeConnectionType); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
318 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
319 /* Initialize win32 class and add to multiprocessing */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
320 temp = create_win32_namespace(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
321 if (!temp) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
322 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
323 PyModule_AddObject(module, "win32", temp); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
324 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
325 /* Initialize the event handle used to signal Ctrl-C */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
326 sigint_event = CreateEvent(NULL, TRUE, FALSE, NULL); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
327 if (!sigint_event) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
328 PyErr_SetFromWindowsErr(0); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
329 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
330 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
331 if (!SetConsoleCtrlHandler(ProcessingCtrlHandler, TRUE)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
332 PyErr_SetFromWindowsErr(0); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
333 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
334 } |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
335 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
336 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
337 /* Add configuration macros */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
338 temp = PyDict_New(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
339 if (!temp) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
340 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
341 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
342 #define ADD_FLAG(name) \ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
343 value = Py_BuildValue("i", name); \ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
344 if (value == NULL) { Py_DECREF(temp); return NULL; } \ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
345 if (PyDict_SetItemString(temp, #name, value) < 0) { \ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
346 Py_DECREF(temp); Py_DECREF(value); return NULL; } \ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
347 Py_DECREF(value) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
348 |
|
57491
3d77d7c16c90
Merged revisions 76566 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
52902
diff
changeset
|
349 #if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
350 ADD_FLAG(HAVE_SEM_OPEN); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
351 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
352 #ifdef HAVE_SEM_TIMEDWAIT |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
353 ADD_FLAG(HAVE_SEM_TIMEDWAIT); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
354 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
355 #ifdef HAVE_FD_TRANSFER |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
356 ADD_FLAG(HAVE_FD_TRANSFER); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
357 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
358 #ifdef HAVE_BROKEN_SEM_GETVALUE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
359 ADD_FLAG(HAVE_BROKEN_SEM_GETVALUE); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
360 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
361 #ifdef HAVE_BROKEN_SEM_UNLINK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
362 ADD_FLAG(HAVE_BROKEN_SEM_UNLINK); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
363 #endif |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
364 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
365 if (PyModule_AddObject(module, "flags", temp) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
366 return NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
367 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
57491
diff
changeset
|
368 return module; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47685
diff
changeset
|
369 } |
