aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drm_legacy.h
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2014-09-10 12:43:58 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-09-12 15:28:13 +0200
commit8f1a2c8dc0dc5c2842e08f304ebdd34b5ddb982c (patch)
treef88c8f80b2096a4232a16259f69d67604d86bf03 /include/drm/drm_legacy.h
parentdrm: Move legacy buffer structures to <drm/drm_legacy.h> (diff)
downloadlinux-dev-8f1a2c8dc0dc5c2842e08f304ebdd34b5ddb982c.tar.xz
linux-dev-8f1a2c8dc0dc5c2842e08f304ebdd34b5ddb982c.zip
drm: Move LOCK_TEST_WITH_RETURN to <drm/drm_legacy.h>
Unfortunately we can't move struct drm_lock_data easily since it's embedded into struct drm_master. And figuring out where exactly this struct should be allocated isn't that simple ... Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'include/drm/drm_legacy.h')
-rw-r--r--include/drm/drm_legacy.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/drm/drm_legacy.h b/include/drm/drm_legacy.h
index a0fabf7624ea..6486306beb0d 100644
--- a/include/drm/drm_legacy.h
+++ b/include/drm/drm_legacy.h
@@ -161,6 +161,23 @@ struct drm_local_map *drm_legacy_getsarea(struct drm_device *dev);
int drm_legacy_addbufs_agp(struct drm_device *d, struct drm_buf_desc *req);
int drm_legacy_addbufs_pci(struct drm_device *d, struct drm_buf_desc *req);
+/**
+ * Test that the hardware lock is held by the caller, returning otherwise.
+ *
+ * \param dev DRM device.
+ * \param filp file pointer of the caller.
+ */
+#define LOCK_TEST_WITH_RETURN( dev, _file_priv ) \
+do { \
+ if (!_DRM_LOCK_IS_HELD(_file_priv->master->lock.hw_lock->lock) || \
+ _file_priv->master->lock.file_priv != _file_priv) { \
+ DRM_ERROR( "%s called without lock held, held %d owner %p %p\n",\
+ __func__, _DRM_LOCK_IS_HELD(_file_priv->master->lock.hw_lock->lock),\
+ _file_priv->master->lock.file_priv, _file_priv); \
+ return -EINVAL; \
+ } \
+} while (0)
+
void drm_legacy_idlelock_take(struct drm_lock_data *lock);
void drm_legacy_idlelock_release(struct drm_lock_data *lock);