[PATCH 07/12] drm: drop redundant drm_file->is_master
Daniel Vetter
daniel at ffwll.ch
Thu Jul 24 02:52:06 PDT 2014
On Wed, Jul 23, 2014 at 05:26:42PM +0200, David Herrmann wrote:
> The drm_file->is_master field is redundant as it's equivalent to:
> drm_file->master && drm_file->master == drm_file->minor->master
>
> 1) "=>"
> Whenever we set drm_file->is_master, we also set:
> drm_file->minor->master = drm_file->master;
>
> Whenever we clear drm_file->is_master, we also call:
> drm_master_put(&drm_file->minor->master);
> which implicitly clears it to NULL.
>
> 2) "<="
> minor->master cannot be set if it is non-NULL. Therefore, it stays as
> is unless a file drops it.
>
> If minor->master is NULL, it is only set by places that also adjust
> drm_file->is_master.
>
> Therefore, we can safely drop is_master and replace it by an inline helper
> that matches:
> drm_file->master && drm_file->master == drm_file->minor->master
>
> Signed-off-by: David Herrmann <dh.herrmann at gmail.com>
Docbook for drm_is_master is missing, otherwise Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
And one question below which doesn't really matter for this patch here.
See below
-Daniel
[snip]
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index d91e09f..e1bb585 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -387,8 +387,6 @@ struct drm_prime_file_private {
> struct drm_file {
> unsigned always_authenticated :1;
> unsigned authenticated :1;
> - /* Whether we're master for a minor. Protected by master_mutex */
> - unsigned is_master :1;
> /* true when the client has asked us to expose stereo 3D mode flags */
> unsigned stereo_allowed :1;
> /*
> @@ -1034,7 +1032,7 @@ struct drm_device {
> /** \name Locks */
> /*@{ */
> struct mutex struct_mutex; /**< For others */
> - struct mutex master_mutex; /**< For drm_minor::master and drm_file::is_master */
> + struct mutex master_mutex; /**< For drm_minor::master */
> /*@} */
>
> /** \name Usage Counters */
> @@ -1172,6 +1170,11 @@ static inline bool drm_is_primary_client(const struct drm_file *file_priv)
> return file_priv->minor->type == DRM_MINOR_LEGACY;
> }
>
Docbook here please ...
> +static inline bool drm_is_master(const struct drm_file *file)
> +{
Hm, we don't have any means to synchronize is_master checks with
concurrent ioctls and stuff. Do we care? Orthogonal issue really.
> + return file->master && file->master == file->minor->master;
> +}
> +
> /******************************************************************/
> /** \name Internal function definitions */
> /*@{*/
> --
> 2.0.2
>
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the dri-devel
mailing list