[Outreachy kernel] [PATCH DRM] drm: Introduce drm_global_item_{get/put}()

Daniel Vetter daniel.vetter at ffwll.ch
Mon Mar 19 21:06:20 UTC 2018


On Tue, Mar 13, 2018 at 1:02 PM, Haneen Mohammed
<hamohammed.sa at gmail.com> wrote:
> For consistency with other reference counting APIs in the kernel,
> introduce drm_global_item_{get/put} functions instead of
> drm_global_item_{ref/unref}.
>
> Compatibility aliases are added to keep existing code working.
>
> The semantic patch scripts/coccinelle/api/drm-get-put.cocci has been
> extended to account for the new helpers.
>
> Signed-off-by: Haneen Mohammed <hamohammed.sa at gmail.com>

Somehow this fell through the cracks. drm_global.c is only used by ttm
and vmwgfx, adding relevant maintainers.
-Daniel

> ---
>  drivers/gpu/drm/drm_global.c             | 43 +++++++++++++++++++++++++++-----
>  include/drm/drm_global.h                 |  2 ++
>  scripts/coccinelle/api/drm-get-put.cocci | 10 ++++++++
>  3 files changed, 49 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_global.c b/drivers/gpu/drm/drm_global.c
> index b2dc21e..76cf948 100644
> --- a/drivers/gpu/drm/drm_global.c
> +++ b/drivers/gpu/drm/drm_global.c
> @@ -64,7 +64,7 @@ void drm_global_release(void)
>  }
>
>  /**
> - * drm_global_item_ref - Initialize and acquire reference to memory
> + * drm_global_item_get - Initialize and acquire reference to memory
>   * object
>   * @ref: Object for initialization
>   *
> @@ -75,7 +75,7 @@ void drm_global_release(void)
>   * Returns:
>   * Zero on success, non-zero otherwise.
>   */
> -int drm_global_item_ref(struct drm_global_reference *ref)
> +int drm_global_item_get(struct drm_global_reference *ref)
>  {
>         int ret = 0;
>         struct drm_global_item *item = &glob[ref->global_type];
> @@ -107,10 +107,10 @@ int drm_global_item_ref(struct drm_global_reference *ref)
>         mutex_unlock(&item->mutex);
>         return ret;
>  }
> -EXPORT_SYMBOL(drm_global_item_ref);
> +EXPORT_SYMBOL(drm_global_item_get);
>
>  /**
> - * drm_global_item_unref - Drop reference to memory
> + * drm_global_item_put - Drop reference to memory
>   * object
>   * @ref: Object being removed
>   *
> @@ -120,7 +120,7 @@ EXPORT_SYMBOL(drm_global_item_ref);
>   *
>   */
>
> -void drm_global_item_unref(struct drm_global_reference *ref)
> +void drm_global_item_put(struct drm_global_reference *ref)
>  {
>         struct drm_global_item *item = &glob[ref->global_type];
>
> @@ -133,5 +133,36 @@ void drm_global_item_unref(struct drm_global_reference *ref)
>         }
>         mutex_unlock(&item->mutex);
>  }
> -EXPORT_SYMBOL(drm_global_item_unref);
> +EXPORT_SYMBOL(drm_global_item_put);
>
> +/**
> + * drm_global_item_ref - Initialize and acquire reference to memory
> + * object
> + * @ref: Object for initialization
> + *
> + * This is a compatibility alias for drm_global_item_get() and should
> + * not be used by new code.
> + *
> + * Returns:
> + * Zero on success, non-zero otherwise.
> + */
> +int drm_global_item_ref(struct drm_global_reference *ref)
> +{
> +       return drm_global_item_get(ref);
> +}
> +EXPORT_SYMBOL(drm_global_item_ref);
> +
> +/**
> + * drm_global_item_unref - Drop reference to memory
> + * object
> + * @ref: Object being removed
> + *
> + * This is a compatibility alias for drm_global_item_get() and should not
> + * be used by new code.
> + */
> +
> +void drm_global_item_unref(struct drm_global_reference *ref)
> +{
> +       drm_global_item_put(ref);
> +}
> +EXPORT_SYMBOL(drm_global_item_unref);
> diff --git a/include/drm/drm_global.h b/include/drm/drm_global.h
> index 3a83060..5eb6f0c 100644
> --- a/include/drm/drm_global.h
> +++ b/include/drm/drm_global.h
> @@ -47,6 +47,8 @@ struct drm_global_reference {
>
>  void drm_global_init(void);
>  void drm_global_release(void);
> +int drm_global_item_get(struct drm_global_reference *ref);
> +void drm_global_item_put(struct drm_global_reference *ref);
>  int drm_global_item_ref(struct drm_global_reference *ref);
>  void drm_global_item_unref(struct drm_global_reference *ref);
>
> diff --git a/scripts/coccinelle/api/drm-get-put.cocci b/scripts/coccinelle/api/drm-get-put.cocci
> index 91fceb8..db1c465 100644
> --- a/scripts/coccinelle/api/drm-get-put.cocci
> +++ b/scripts/coccinelle/api/drm-get-put.cocci
> @@ -54,6 +54,12 @@ expression object;
>  |
>  - drm_dev_unref(object)
>  + drm_dev_put(object)
> +|
> +- drm_global_item_ref(object)
> ++ drm_global_item_get(object)
> +|
> +- drm_global_item_unref(object)
> ++ drm_global_item_put(object)
>  )
>
>  @r depends on report@
> @@ -87,6 +93,10 @@ drm_property_unreference_blob at p(object)
>  drm_property_reference_blob at p(object)
>  |
>  drm_dev_unref at p(object)
> +|
> +drm_global_item_ref at p(object)
> +|
> +drm_global_item_unref at p(object)
>  )
>
>  @script:python depends on report@
> --
> 2.7.4
>
> --
> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe at googlegroups.com.
> To post to this group, send email to outreachy-kernel at googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20180313120205.GA12094%40Haneen.
> For more options, visit https://groups.google.com/d/optout.



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list