Re: [PATCH] drm/print: Include drm_device.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Jani Nikula (2025-01-22 11:02:31-03:00)
>On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@xxxxxxxxx> wrote:
>> Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
>>>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
>>>> The header drm_print.h uses members of struct drm_device pointers, as
>>>> such, it should include drm_device.h to let the compiler know the full
>>>> type definition.
>>>> 
>>>> Without such include, users of drm_print.h that don't explicitly need
>>>> drm_device.h would bump into build errors and be forced to include the
>>>> latter.
>>>> 
>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@xxxxxxxxx>
>>>> ---
>>>>  include/drm/drm_print.h | 1 +
>>>>  1 file changed, 1 insertion(+)
>>>> 
>>>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>>>> index f77fe1531cf8..9732f514566d 100644
>>>> --- a/include/drm/drm_print.h
>>>> +++ b/include/drm/drm_print.h
>>>> @@ -32,6 +32,7 @@
>>>>  #include <linux/dynamic_debug.h>
>>>>  
>>>>  #include <drm/drm.h>
>>>> +#include <drm/drm_device.h>
>>>
>>>We much prefer just a struct device forward decl to avoid monster headers.
>>>Is that not doable here?
>>
>> I don't think so. This header explicitly uses members of struct
>> drm_device, so the compiler needs to know the full type definition. As
>> an example see the definition of drm_WARN(), it uses (drm)->dev.
>
>I grudgingly agree. I don't think there are actual cases where this
>happens, but I can imagine you could create one.

It happened to me, and that motivated me to send this patch.

I had a local patch where I just needed the drm_print.h header, but I
ended up having to include drm_device.h in my .c file.

>
>>> Worst case I'd convert the drm_info_printer() static inline to a
>>> macro, not sure about the exact rules here if you never deref a
>>> pointer.
>
>The forward declaration is enough for passing pointers around without
>dereferencing. It's the dereferencing in the macros that could fail the
>build if the .c using them doesn't include drm_device.h.
>
>To balance things out, I think we could probably drop drm/drm.h if we
>inlined one use of DRM_NAME to just "drm".
>
>
>BR,
>Jani.
>
>
>>>-Sima
>>>
>>>>  
>>>>  struct debugfs_regset32;
>>>>  struct drm_device;
>>>> -- 
>>>> 2.48.1
>>>> 
>>>
>>>-- 
>>>Simona Vetter
>>>Software Engineer, Intel Corporation
>>>http://blog.ffwll.ch
>
>-- 
>Jani Nikula, Intel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux