1 typedef struct { 2 PyObject_HEAD 3 key_t key; 4 int id; 5 short op_flags; 6 } Semaphore; 7 8 9 /* Object methods */ 10 PyObject *Semaphore_new(PyTypeObject *type, PyObject *, PyObject *); 11 int Semaphore_init(Semaphore *, PyObject *, PyObject *); 12 void Semaphore_dealloc(Semaphore *); 13 PyObject *Semaphore_enter(Semaphore *); 14 PyObject *Semaphore_exit(Semaphore *, PyObject *); 15 PyObject *Semaphore_P(Semaphore *, PyObject *, PyObject *); 16 PyObject *Semaphore_acquire(Semaphore *, PyObject *, PyObject *); 17 PyObject *Semaphore_V(Semaphore *, PyObject *, PyObject *); 18 PyObject *Semaphore_release(Semaphore *, PyObject *, PyObject *); 19 PyObject *Semaphore_Z(Semaphore *, PyObject *, PyObject *); 20 PyObject *Semaphore_remove(Semaphore *); 21 22 /* Object attributes (read-write & read-only) */ 23 PyObject *sem_get_value(Semaphore *); 24 int sem_set_value(Semaphore *self, PyObject *py_value); 25 26 PyObject *sem_get_block(Semaphore *); 27 int sem_set_block(Semaphore *self, PyObject *py_value); 28 29 PyObject *sem_get_mode(Semaphore *); 30 int sem_set_mode(Semaphore *, PyObject *); 31 32 PyObject *sem_get_undo(Semaphore *); 33 int sem_set_undo(Semaphore *self, PyObject *py_value); 34 35 PyObject *sem_get_uid(Semaphore *); 36 int sem_set_uid(Semaphore *, PyObject *); 37 38 PyObject *sem_get_gid(Semaphore *); 39 int sem_set_gid(Semaphore *, PyObject *); 40 41 PyObject *sem_get_key(Semaphore *); 42 PyObject *sem_get_c_uid(Semaphore *); 43 PyObject *sem_get_c_gid(Semaphore *); 44 PyObject *sem_get_last_pid(Semaphore *); 45 PyObject *sem_get_waiting_for_nonzero(Semaphore *); 46 PyObject *sem_get_waiting_for_zero(Semaphore *); 47 PyObject *sem_get_o_time(Semaphore *); 48 49 PyObject *sem_str(Semaphore *); 50 PyObject *sem_repr(Semaphore *); 51 52 /* Utility functions */ 53 PyObject *sem_remove(int); 54