drm: inline "struct drm_sigdata"
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 29 Aug 2014 10:12:39 +0000 (12:12 +0200)
committerDave Airlie <airlied@redhat.com>
Wed, 10 Sep 2014 07:41:55 +0000 (17:41 +1000)
The sigdata structure is only used to group two fields in drm_device.
Inline it and make it an unnamed object.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_lock.c
include/drm/drmP.h

index e26b59e385ff151116f5af63bf47626c2839f8eb..60f148134e6a0f744b328b0695b8017208aec033 100644 (file)
@@ -120,7 +120,7 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)
                sigaddset(&dev->sigmask, SIGTTOU);
                dev->sigdata.context = lock->context;
                dev->sigdata.lock = master->lock.hw_lock;
-               block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask);
+               block_all_signals(drm_notifier, dev, &dev->sigmask);
        }
 
        if (dev->driver->dma_quiescent && (lock->flags & _DRM_LOCK_QUIESCENT))
@@ -286,26 +286,27 @@ int drm_lock_free(struct drm_lock_data *lock_data, unsigned int context)
  * If the lock is not held, then let the signal proceed as usual.  If the lock
  * is held, then set the contended flag and keep the signal blocked.
  *
- * \param priv pointer to a drm_sigdata structure.
+ * \param priv pointer to a drm_device structure.
  * \return one if the signal should be delivered normally, or zero if the
  * signal should be blocked.
  */
 static int drm_notifier(void *priv)
 {
-       struct drm_sigdata *s = (struct drm_sigdata *) priv;
+       struct drm_device *dev = priv;
+       struct drm_hw_lock *lock = dev->sigdata.lock;
        unsigned int old, new, prev;
 
        /* Allow signal delivery if lock isn't held */
-       if (!s->lock || !_DRM_LOCK_IS_HELD(s->lock->lock)
-           || _DRM_LOCKING_CONTEXT(s->lock->lock) != s->context)
+       if (!lock || !_DRM_LOCK_IS_HELD(lock->lock)
+           || _DRM_LOCKING_CONTEXT(lock->lock) != dev->sigdata.context)
                return 1;
 
        /* Otherwise, set flag to force call to
           drmUnlock */
        do {
-               old = s->lock->lock;
+               old = lock->lock;
                new = old | _DRM_LOCK_CONT;
-               prev = cmpxchg(&s->lock->lock, old, new);
+               prev = cmpxchg(&lock->lock, old, new);
        } while (prev != old);
        return 0;
 }
index 8f55875dafbb608b58cb670ce812389909e323cb..840a3735d3dabe9b14fac8f14c89342c60fba611 100644 (file)
@@ -432,12 +432,6 @@ struct drm_sg_mem {
        dma_addr_t *busaddr;
 };
 
-struct drm_sigdata {
-       int context;
-       struct drm_hw_lock *lock;
-};
-
-
 /**
  * Kernel side of a mapping
  */
@@ -1035,9 +1029,13 @@ struct drm_device {
 
        struct drm_sg_mem *sg;  /**< Scatter gather memory */
        unsigned int num_crtcs;                  /**< Number of CRTCs on this device */
-       struct drm_sigdata sigdata;        /**< For block_all_signals */
        sigset_t sigmask;
 
+       struct {
+               int context;
+               struct drm_hw_lock *lock;
+       } sigdata;
+
        struct drm_local_map *agp_buffer_map;
        unsigned int agp_buffer_token;