diff options
Diffstat (limited to 'memory.h')
-rw-r--r-- | memory.h | 57 |
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); + |