summaryrefslogtreecommitdiff
path: root/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'memory.h')
-rw-r--r--memory.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/memory.h b/memory.h
new file mode 100644
index 0000000..d6c3cfc
--- /dev/null
+++ b/memory.h
@@ -0,0 +1,57 @@
+typedef struct {
+ PyObject_HEAD
+ key_t key;
+ int id;
+ void *address;
+} SharedMemory;
+
+/* Union for passing values to shm_set_ipc_perm_value() */
+union ipc_perm_value {
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
+};
+
+/* Object methods */
+PyObject *SharedMemory_new(PyTypeObject *, PyObject *, PyObject *);
+int SharedMemory_init(SharedMemory *, PyObject *, PyObject *);
+void SharedMemory_dealloc(SharedMemory *);
+PyObject *SharedMemory_attach(SharedMemory *, PyObject *);
+PyObject *SharedMemory_detach(SharedMemory *);
+PyObject *SharedMemory_read(SharedMemory *, PyObject *, PyObject *);
+PyObject *SharedMemory_write(SharedMemory *, PyObject *, PyObject *);
+PyObject *SharedMemory_remove(SharedMemory *);
+
+/* Object attributes (read-write & read-only) */
+
+PyObject *shm_get_uid(SharedMemory *);
+int shm_set_uid(SharedMemory *, PyObject *);
+
+PyObject *shm_get_gid(SharedMemory *);
+int shm_set_gid(SharedMemory *, PyObject *);
+
+PyObject *shm_get_mode(SharedMemory *);
+int shm_set_mode(SharedMemory *, PyObject *);
+
+PyObject *shm_get_key(SharedMemory *);
+PyObject *shm_get_size(SharedMemory *);
+PyObject *shm_get_address(SharedMemory *);
+PyObject *shm_get_attached(SharedMemory *);
+PyObject *shm_get_last_attach_time(SharedMemory *);
+PyObject *shm_get_last_detach_time(SharedMemory *);
+PyObject *shm_get_last_change_time(SharedMemory *);
+PyObject *shm_get_creator_pid(SharedMemory *);
+PyObject *shm_get_last_pid(SharedMemory *);
+PyObject *shm_get_number_attached(SharedMemory *);
+PyObject *shm_get_cuid(SharedMemory *);
+PyObject *shm_get_cgid(SharedMemory *);
+
+PyObject *shm_str(SharedMemory *);
+PyObject *shm_repr(SharedMemory *);
+
+
+/* Utility functions */
+PyObject *shm_remove(int);
+
+PyObject *shm_attach(SharedMemory *, int);
+