Home | History | Annotate | Download | only in Python

Lines Matching refs:lock

9 struct lock {

59 * Lock support.
63 struct lock *lock;
70 lock = (struct lock *) malloc(sizeof(struct lock));
71 lock->lock_locked = 0;
72 (void) mon_create(&lock->lock_monitor);
73 (void) cv_create(&lock->lock_condvar, lock->lock_monitor);
74 dprintf(("PyThread_allocate_lock() -> %p\n", lock));
75 return (PyThread_type_lock) lock;
78 void PyThread_free_lock(PyThread_type_lock lock)
80 dprintf(("PyThread_free_lock(%p) called\n", lock));
81 mon_destroy(((struct lock *) lock)->lock_monitor);
82 free((char *) lock);
85 int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
89 dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
92 (void) mon_enter(((struct lock *) lock)->lock_monitor);
94 while (((struct lock *) lock)->lock_locked)
95 cv_wait(((struct lock *) lock)->lock_condvar);
96 if (!((struct lock *) lock)->lock_locked) {
98 ((struct lock *) lock)->lock_locked = 1;
100 cv_broadcast(((struct lock *) lock)->lock_condvar);
101 mon_exit(((struct lock *) lock)->lock_monitor);
102 dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
106 void PyThread_release_lock(PyThread_type_lock lock)
108 dprintf(("PyThread_release_lock(%p) called\n", lock));
109 (void) mon_enter(((struct lock *) lock)->lock_monitor);
110 ((struct lock *) lock)->lock_locked = 0;
111 cv_broadcast(((struct lock *) lock)->lock_condvar);
112 mon_exit(((struct lock *) lock)->lock_monitor);