Lines Matching refs:lock

6  * lock.c -- IOCTLs for locking -*- linux-c -*-
45 volatile unsigned int *lock = &lock_data->hw_lock->lock;
48 old = *lock;
53 prev = atomic_cas_uint(lock, old, new);
59 DRM_ERROR("%d holds heavyweight lock\n",
67 /* Have lock */
74 * This takes a lock forcibly and hands it to context. Should ONLY be used
75 * inside *_unlock to give lock to kernel before calling *_dma_schedule.
78 drm_lock_transfer(drm_device_t *dev, volatile unsigned int *lock,
83 dev->lock.filp = NULL;
85 old = *lock;
87 prev = atomic_cas_uint(lock, old, new);
94 drm_lock_free(drm_device_t *dev, volatile unsigned int *lock,
99 mutex_enter(&(dev->lock.lock_mutex));
100 dev->lock.filp = NULL;
102 old = *lock;
104 prev = atomic_cas_uint(lock, old, new);
109 DRM_ERROR("%d freed heavyweight lock held by %d\n",
111 mutex_exit(&(dev->lock.lock_mutex));
114 cv_broadcast(&(dev->lock.lock_cv));
115 mutex_exit(&(dev->lock.lock_mutex));
124 drm_lock_t lock;
127 DRM_COPYFROM_WITH_RETURN(&lock, (void *)data, sizeof (lock));
129 if (lock.context == DRM_KERNEL_CONTEXT) {
133 if (dev->driver->use_dma_queue && lock.context < 0)
136 mutex_enter(&(dev->lock.lock_mutex));
138 if (drm_lock_take(&dev->lock, lock.context)) {
139 dev->lock.filp = fpriv;
140 dev->lock.lock_time = jiffies;
141 break; /* Got lock */
143 ret = cv_wait_sig(&(dev->lock.lock_cv),
144 &(dev->lock.lock_mutex));
147 mutex_exit(&(dev->lock.lock_mutex));
151 mutex_exit(&(dev->lock.lock_mutex));
154 (lock.flags & _DRM_LOCK_QUIESCENT))
165 drm_lock_t lock;
167 DRM_COPYFROM_WITH_RETURN(&lock, (void *)data, sizeof (lock));
169 if (lock.context == DRM_KERNEL_CONTEXT) {
171 DRM_CURRENTPID, lock.context);
177 if (drm_lock_free(dev, &dev->lock.hw_lock->lock, lock.context)) {