Loading src/shared_array_attach.c +5 −5 Original line number Diff line number Diff line Loading @@ -37,18 +37,18 @@ static PyObject *do_attach(const char *name) /* Open the shm block */ if ((fd = shm_open(name, O_RDWR, 0)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Read the meta data structure */ if (read(fd, &meta, sizeof (meta)) != sizeof (meta)) { close(fd); return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); } /* Check the meta data */ if (strncmp(meta.magic, SHARED_ARRAY_MAGIC, sizeof (meta.magic))) { close(fd); PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } Loading @@ -56,7 +56,7 @@ static PyObject *do_attach(const char *name) /* Check the number of dimensions */ if (meta.ndims > SHARED_ARRAY_NDIMS_MAX) { close(fd); PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_ValueError, "Too many dimensions, recompile SharedArray!"); return NULL; } Loading @@ -65,7 +65,7 @@ static PyObject *do_attach(const char *name) data = mmap(NULL, meta.size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); close(fd); if (data == MAP_FAILED) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Summon Leon */ leon = PyObject_MALLOC(sizeof (*leon)); Loading src/shared_array_create.c +4 −4 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ static PyObject *do_create(const char *name, int ndims, npy_intp *dims, PyArray_ /* Internal limitation */ if (ndims > SHARED_ARRAY_NDIMS_MAX) { PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_ValueError, "Too many dimensions, recompile SharedArray!"); return NULL; } Loading @@ -52,17 +52,17 @@ static PyObject *do_create(const char *name, int ndims, npy_intp *dims, PyArray_ /* Create the shm block */ if ((fd = shm_open(name, O_RDWR | O_CREAT | O_EXCL, 0666)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Set the block size */ if (ftruncate(fd, size) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Map it */ data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); close(fd); if (data == MAP_FAILED) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Build the meta-data structure in memory */ meta = (struct array_meta *) data; Loading src/shared_array_delete.c +15 −10 Original line number Diff line number Diff line Loading @@ -29,30 +29,35 @@ static PyObject *do_delete(const char *name) { struct array_meta meta; int fd; int size; /* Open the shm block */ if ((fd = shm_open(name, O_RDWR, 0)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_RuntimeError, name); /* Read the meta data structure */ if (read(fd, &meta, sizeof (meta)) != sizeof (meta)) { size = read(fd, &meta, sizeof (meta)); close(fd); return PyErr_SetFromErrno(PyExc_RuntimeError); } /* Close the shm block */ close(fd); /* Catch read errors */ if (size <= 0) return PyErr_SetFromErrnoWithFilename(PyExc_RuntimeError, name); /* Catch short reads */ if (size != sizeof (meta)) { PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } /* Check the meta data */ if (strncmp(meta.magic, SHARED_ARRAY_MAGIC, sizeof (meta.magic))) { PyErr_SetString(PyExc_RuntimeError, "No SharedArray at this address"); PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } /* Unlink the shm block */ if (shm_unlink(name) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); Py_RETURN_NONE; } Loading Loading
src/shared_array_attach.c +5 −5 Original line number Diff line number Diff line Loading @@ -37,18 +37,18 @@ static PyObject *do_attach(const char *name) /* Open the shm block */ if ((fd = shm_open(name, O_RDWR, 0)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Read the meta data structure */ if (read(fd, &meta, sizeof (meta)) != sizeof (meta)) { close(fd); return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); } /* Check the meta data */ if (strncmp(meta.magic, SHARED_ARRAY_MAGIC, sizeof (meta.magic))) { close(fd); PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } Loading @@ -56,7 +56,7 @@ static PyObject *do_attach(const char *name) /* Check the number of dimensions */ if (meta.ndims > SHARED_ARRAY_NDIMS_MAX) { close(fd); PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_ValueError, "Too many dimensions, recompile SharedArray!"); return NULL; } Loading @@ -65,7 +65,7 @@ static PyObject *do_attach(const char *name) data = mmap(NULL, meta.size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); close(fd); if (data == MAP_FAILED) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Summon Leon */ leon = PyObject_MALLOC(sizeof (*leon)); Loading
src/shared_array_create.c +4 −4 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ static PyObject *do_create(const char *name, int ndims, npy_intp *dims, PyArray_ /* Internal limitation */ if (ndims > SHARED_ARRAY_NDIMS_MAX) { PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_ValueError, "Too many dimensions, recompile SharedArray!"); return NULL; } Loading @@ -52,17 +52,17 @@ static PyObject *do_create(const char *name, int ndims, npy_intp *dims, PyArray_ /* Create the shm block */ if ((fd = shm_open(name, O_RDWR | O_CREAT | O_EXCL, 0666)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Set the block size */ if (ftruncate(fd, size) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Map it */ data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); close(fd); if (data == MAP_FAILED) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); /* Build the meta-data structure in memory */ meta = (struct array_meta *) data; Loading
src/shared_array_delete.c +15 −10 Original line number Diff line number Diff line Loading @@ -29,30 +29,35 @@ static PyObject *do_delete(const char *name) { struct array_meta meta; int fd; int size; /* Open the shm block */ if ((fd = shm_open(name, O_RDWR, 0)) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_RuntimeError, name); /* Read the meta data structure */ if (read(fd, &meta, sizeof (meta)) != sizeof (meta)) { size = read(fd, &meta, sizeof (meta)); close(fd); return PyErr_SetFromErrno(PyExc_RuntimeError); } /* Close the shm block */ close(fd); /* Catch read errors */ if (size <= 0) return PyErr_SetFromErrnoWithFilename(PyExc_RuntimeError, name); /* Catch short reads */ if (size != sizeof (meta)) { PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } /* Check the meta data */ if (strncmp(meta.magic, SHARED_ARRAY_MAGIC, sizeof (meta.magic))) { PyErr_SetString(PyExc_RuntimeError, "No SharedArray at this address"); PyErr_SetString(PyExc_IOError, "No SharedArray at this address"); return NULL; } /* Unlink the shm block */ if (shm_unlink(name) < 0) return PyErr_SetFromErrno(PyExc_RuntimeError); return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); Py_RETURN_NONE; } Loading