1/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5#if defined(MS_WINDOWS)
6
7PyDoc_STRVAR(_multiprocessing_closesocket__doc__,
8"closesocket($module, handle, /)\n"
9"--\n"
10"\n");
11
12#define _MULTIPROCESSING_CLOSESOCKET_METHODDEF    \
13    {"closesocket", (PyCFunction)_multiprocessing_closesocket, METH_O, _multiprocessing_closesocket__doc__},
14
15static PyObject *
16_multiprocessing_closesocket_impl(PyObject *module, HANDLE handle);
17
18static PyObject *
19_multiprocessing_closesocket(PyObject *module, PyObject *arg)
20{
21    PyObject *return_value = NULL;
22    HANDLE handle;
23
24    if (!PyArg_Parse(arg, ""F_HANDLE":closesocket", &handle)) {
25        goto exit;
26    }
27    return_value = _multiprocessing_closesocket_impl(module, handle);
28
29exit:
30    return return_value;
31}
32
33#endif /* defined(MS_WINDOWS) */
34
35#if defined(MS_WINDOWS)
36
37PyDoc_STRVAR(_multiprocessing_recv__doc__,
38"recv($module, handle, size, /)\n"
39"--\n"
40"\n");
41
42#define _MULTIPROCESSING_RECV_METHODDEF    \
43    {"recv", _PyCFunction_CAST(_multiprocessing_recv), METH_FASTCALL, _multiprocessing_recv__doc__},
44
45static PyObject *
46_multiprocessing_recv_impl(PyObject *module, HANDLE handle, int size);
47
48static PyObject *
49_multiprocessing_recv(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
50{
51    PyObject *return_value = NULL;
52    HANDLE handle;
53    int size;
54
55    if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"i:recv",
56        &handle, &size)) {
57        goto exit;
58    }
59    return_value = _multiprocessing_recv_impl(module, handle, size);
60
61exit:
62    return return_value;
63}
64
65#endif /* defined(MS_WINDOWS) */
66
67#if defined(MS_WINDOWS)
68
69PyDoc_STRVAR(_multiprocessing_send__doc__,
70"send($module, handle, buf, /)\n"
71"--\n"
72"\n");
73
74#define _MULTIPROCESSING_SEND_METHODDEF    \
75    {"send", _PyCFunction_CAST(_multiprocessing_send), METH_FASTCALL, _multiprocessing_send__doc__},
76
77static PyObject *
78_multiprocessing_send_impl(PyObject *module, HANDLE handle, Py_buffer *buf);
79
80static PyObject *
81_multiprocessing_send(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
82{
83    PyObject *return_value = NULL;
84    HANDLE handle;
85    Py_buffer buf = {NULL, NULL};
86
87    if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"y*:send",
88        &handle, &buf)) {
89        goto exit;
90    }
91    return_value = _multiprocessing_send_impl(module, handle, &buf);
92
93exit:
94    /* Cleanup for buf */
95    if (buf.obj) {
96       PyBuffer_Release(&buf);
97    }
98
99    return return_value;
100}
101
102#endif /* defined(MS_WINDOWS) */
103
104PyDoc_STRVAR(_multiprocessing_sem_unlink__doc__,
105"sem_unlink($module, name, /)\n"
106"--\n"
107"\n");
108
109#define _MULTIPROCESSING_SEM_UNLINK_METHODDEF    \
110    {"sem_unlink", (PyCFunction)_multiprocessing_sem_unlink, METH_O, _multiprocessing_sem_unlink__doc__},
111
112static PyObject *
113_multiprocessing_sem_unlink_impl(PyObject *module, const char *name);
114
115static PyObject *
116_multiprocessing_sem_unlink(PyObject *module, PyObject *arg)
117{
118    PyObject *return_value = NULL;
119    const char *name;
120
121    if (!PyUnicode_Check(arg)) {
122        _PyArg_BadArgument("sem_unlink", "argument", "str", arg);
123        goto exit;
124    }
125    Py_ssize_t name_length;
126    name = PyUnicode_AsUTF8AndSize(arg, &name_length);
127    if (name == NULL) {
128        goto exit;
129    }
130    if (strlen(name) != (size_t)name_length) {
131        PyErr_SetString(PyExc_ValueError, "embedded null character");
132        goto exit;
133    }
134    return_value = _multiprocessing_sem_unlink_impl(module, name);
135
136exit:
137    return return_value;
138}
139
140#ifndef _MULTIPROCESSING_CLOSESOCKET_METHODDEF
141    #define _MULTIPROCESSING_CLOSESOCKET_METHODDEF
142#endif /* !defined(_MULTIPROCESSING_CLOSESOCKET_METHODDEF) */
143
144#ifndef _MULTIPROCESSING_RECV_METHODDEF
145    #define _MULTIPROCESSING_RECV_METHODDEF
146#endif /* !defined(_MULTIPROCESSING_RECV_METHODDEF) */
147
148#ifndef _MULTIPROCESSING_SEND_METHODDEF
149    #define _MULTIPROCESSING_SEND_METHODDEF
150#endif /* !defined(_MULTIPROCESSING_SEND_METHODDEF) */
151/*[clinic end generated code: output=d3bbf69de578db7b input=a9049054013a1b77]*/
152