Deleted Added
full compact
drm_lock.c (145132) drm_lock.c (152909)
1/* lock.c -- IOCTLs for locking -*- linux-c -*-
2 * Created: Tue Feb 2 08:37:54 1999 by faith@valinux.com
3 */
4/*-
5 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
6 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
7 * All Rights Reserved.
8 *

--- 15 unchanged lines hidden (view full) ---

24 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26 * OTHER DEALINGS IN THE SOFTWARE.
27 *
28 * Authors:
29 * Rickard E. (Rik) Faith <faith@valinux.com>
30 * Gareth Hughes <gareth@valinux.com>
31 *
1/* lock.c -- IOCTLs for locking -*- linux-c -*-
2 * Created: Tue Feb 2 08:37:54 1999 by faith@valinux.com
3 */
4/*-
5 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
6 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
7 * All Rights Reserved.
8 *

--- 15 unchanged lines hidden (view full) ---

24 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26 * OTHER DEALINGS IN THE SOFTWARE.
27 *
28 * Authors:
29 * Rickard E. (Rik) Faith <faith@valinux.com>
30 * Gareth Hughes <gareth@valinux.com>
31 *
32 * $FreeBSD: head/sys/dev/drm/drm_lock.c 145132 2005-04-16 03:44:47Z anholt $
33 */
34
32 */
33
34#include <sys/cdefs.h>
35__FBSDID("$FreeBSD: head/sys/dev/drm/drm_lock.c 152909 2005-11-28 23:13:57Z anholt $");
36
35#include "dev/drm/drmP.h"
36
37int drm_lock_take(__volatile__ unsigned int *lock, unsigned int context)
38{
39 unsigned int old, new;
40
41 do {
42 old = *lock;

--- 65 unchanged lines hidden (view full) ---

108 DRM_ERROR("Process %d using kernel context %d\n",
109 DRM_CURRENTPID, lock.context);
110 return EINVAL;
111 }
112
113 DRM_DEBUG("%d (pid %d) requests lock (0x%08x), flags = 0x%08x\n",
114 lock.context, DRM_CURRENTPID, dev->lock.hw_lock->lock, lock.flags);
115
37#include "dev/drm/drmP.h"
38
39int drm_lock_take(__volatile__ unsigned int *lock, unsigned int context)
40{
41 unsigned int old, new;
42
43 do {
44 old = *lock;

--- 65 unchanged lines hidden (view full) ---

110 DRM_ERROR("Process %d using kernel context %d\n",
111 DRM_CURRENTPID, lock.context);
112 return EINVAL;
113 }
114
115 DRM_DEBUG("%d (pid %d) requests lock (0x%08x), flags = 0x%08x\n",
116 lock.context, DRM_CURRENTPID, dev->lock.hw_lock->lock, lock.flags);
117
116 if (dev->use_dma_queue && lock.context < 0)
118 if (dev->driver.use_dma_queue && lock.context < 0)
117 return EINVAL;
118
119 DRM_LOCK();
120 for (;;) {
121 if (drm_lock_take(&dev->lock.hw_lock->lock, lock.context)) {
122 dev->lock.filp = (void *)(uintptr_t)DRM_CURRENTPID;
123 dev->lock.lock_time = jiffies;
124 atomic_inc(&dev->counts[_DRM_STAT_LOCKS]);

--- 14 unchanged lines hidden (view full) ---

139 DRM_UNLOCK();
140 DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");
141
142 if (ret != 0)
143 return ret;
144
145 /* XXX: Add signal blocking here */
146
119 return EINVAL;
120
121 DRM_LOCK();
122 for (;;) {
123 if (drm_lock_take(&dev->lock.hw_lock->lock, lock.context)) {
124 dev->lock.filp = (void *)(uintptr_t)DRM_CURRENTPID;
125 dev->lock.lock_time = jiffies;
126 atomic_inc(&dev->counts[_DRM_STAT_LOCKS]);

--- 14 unchanged lines hidden (view full) ---

141 DRM_UNLOCK();
142 DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");
143
144 if (ret != 0)
145 return ret;
146
147 /* XXX: Add signal blocking here */
148
147 if (dev->dma_quiescent != NULL && (lock.flags & _DRM_LOCK_QUIESCENT))
148 dev->dma_quiescent(dev);
149 if (dev->driver.dma_quiescent != NULL &&
150 (lock.flags & _DRM_LOCK_QUIESCENT))
151 dev->driver.dma_quiescent(dev);
149
150 return 0;
151}
152
153int drm_unlock(DRM_IOCTL_ARGS)
154{
155 DRM_DEVICE;
156 drm_lock_t lock;

--- 21 unchanged lines hidden ---
152
153 return 0;
154}
155
156int drm_unlock(DRM_IOCTL_ARGS)
157{
158 DRM_DEVICE;
159 drm_lock_t lock;

--- 21 unchanged lines hidden ---