diff options
Diffstat (limited to 'Modules/_multiprocessing/posixshmem.c')
-rw-r--r-- | Modules/_multiprocessing/posixshmem.c | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/Modules/_multiprocessing/posixshmem.c b/Modules/_multiprocessing/posixshmem.c deleted file mode 100644 index 2049dbb..0000000 --- a/Modules/_multiprocessing/posixshmem.c +++ /dev/null @@ -1,131 +0,0 @@ -/* -posixshmem - A Python extension that provides shm_open() and shm_unlink() -*/ - -#define PY_SSIZE_T_CLEAN - -#include <Python.h> -#include "structmember.h" - -// for shm_open() and shm_unlink() -#ifdef HAVE_SYS_MMAN_H -#include <sys/mman.h> -#endif - -/*[clinic input] -module _posixshmem -[clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=a416734e49164bf8]*/ - -/* - * - * Module-level functions & meta stuff - * - */ - -#ifdef HAVE_SHM_OPEN -/*[clinic input] -_posixshmem.shm_open -> int - path: unicode - flags: int - mode: int = 0o777 - -# "shm_open(path, flags, mode=0o777)\n\n\ - -Open a shared memory object. Returns a file descriptor (integer). - -[clinic start generated code]*/ - -static int -_posixshmem_shm_open_impl(PyObject *module, PyObject *path, int flags, - int mode) -/*[clinic end generated code: output=8d110171a4fa20df input=e83b58fa802fac25]*/ -{ - int fd; - int async_err = 0; - const char *name = PyUnicode_AsUTF8(path); - if (name == NULL) { - return -1; - } - do { - Py_BEGIN_ALLOW_THREADS - fd = shm_open(name, flags, mode); - Py_END_ALLOW_THREADS - } while (fd < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); - - if (fd < 0) { - if (!async_err) - PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path); - return -1; - } - - return fd; -} -#endif /* HAVE_SHM_OPEN */ - -#ifdef HAVE_SHM_UNLINK -/*[clinic input] -_posixshmem.shm_unlink - path: unicode - -Remove a shared memory object (similar to unlink()). - -Remove a shared memory object name, and, once all processes have unmapped -the object, de-allocates and destroys the contents of the associated memory -region. - -[clinic start generated code]*/ - -static PyObject * -_posixshmem_shm_unlink_impl(PyObject *module, PyObject *path) -/*[clinic end generated code: output=42f8b23d134b9ff5 input=8dc0f87143e3b300]*/ -{ - int rv; - int async_err = 0; - const char *name = PyUnicode_AsUTF8(path); - if (name == NULL) { - return NULL; - } - do { - Py_BEGIN_ALLOW_THREADS - rv = shm_unlink(name); - Py_END_ALLOW_THREADS - } while (rv < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); - - if (rv < 0) { - if (!async_err) - PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path); - return NULL; - } - - Py_RETURN_NONE; -} -#endif /* HAVE_SHM_UNLINK */ - -#include "clinic/posixshmem.c.h" - -static PyMethodDef module_methods[ ] = { - _POSIXSHMEM_SHM_OPEN_METHODDEF - _POSIXSHMEM_SHM_UNLINK_METHODDEF - {NULL} /* Sentinel */ -}; - - -static struct PyModuleDef this_module = { - PyModuleDef_HEAD_INIT, // m_base - "_posixshmem", // m_name - "POSIX shared memory module", // m_doc - -1, // m_size (space allocated for module globals) - module_methods, // m_methods -}; - -/* Module init function */ -PyMODINIT_FUNC -PyInit__posixshmem(void) { - PyObject *module; - module = PyModule_Create(&this_module); - if (!module) { - return NULL; - } - return module; -} |