[PATCH 00/24] drm: add extern C guard for the UAPI headers

Daniel Vetter daniel at ffwll.ch
Fri Apr 22 08:34:13 UTC 2016


On Thu, Apr 21, 2016 at 09:17:13PM +0100, Emil Velikov wrote:
> [Re-sending to the correct mailing list. Apologies if you've seen it already]
> 
> Hi all, David Howells
> 
> Dave Airlie pointed out that "polluting" the headers in a manner as seen 
> with this series might not be too wise. David H, can we hear your view 
> on the topic ?
> 
> Note that these headers are meant to be used by more than just Linux 
> (various BSD and Solaris come to mind), making things more complicated.
> 
> 
> The change:
> 
> 
> As some of you may know there are some subtle distinctions between C and 
> C++ structs/enums, thus one should wrap/annotate them roughly like below.
> 
> 
> ...
> #if defined(__cplusplus)
> extern "C" {
> #endif
> 
> struct foo {
>     int bar;
>     ...
> };
> 
> ...
> 
> #if defined(__cplusplus)
> }
> #endif
> 
> 
> In order to work around the lack of these users can wrap the header 
> inclusion in the same way. For example:
> 
> 
> ...
> #if defined(__cplusplus)
> extern "C" {
> #endif
> 
> #include <i915_drm.h>
> 
> #if defined(__cplusplus)
> }
> #endif
> 
> 
> Yet we should avoid this approach, as it might cause issues [1] [2] [3]. 
> Thus here is a series which systematically updates all the UAPI headers 
> in one go.
> 
> I would prefer if we get this merged in one go. Daniel, is it possible 
> to go through drm-misc ? The series is already based on it.
> 
> Maintainers, does this sound reasonable, can we get a few acks ?

Ack on the concept. I really want that new uapi flows from the kernel,
anything we can do to make conversion to headers suitable for libdrm fully
automatic has my approval - currently we have headaches with divergent
evolution sometimes.

I want this.
-Daniel

> 
> 
> Thanks
> Emil
> 
> [1] http://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/
> [2] https://isocpp.org/wiki/faq/mixing-c-and-cpp
> [3] http://www.oracle.com/technetwork/articles/servers-storage-dev/mixingcandcpluspluscode-305840.html
> 
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Cc: Andrzej Hajda <a.hajda at samsung.com>
> Cc: Ben Skeggs <bskeggs at redhat.com>
> Cc: Brian Paul <brianp at vmware.com>
> Cc: Christian Gmeiner <christian.gmeiner at gmail.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Daniel Vetter <daniel.vetter at intel.com>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: David Howells <dhowells at redhat.com>
> Cc: Eric Anholt <eric at anholt.net>
> Cc: Erik Faye-Lund <kusmabite at gmail.com>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> Cc: Inki Dae <inki.dae at samsung.com>
> Cc: Jani Nikula <jani.nikula at linux.intel.com>
> Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Cc: Lucas Stach <l.stach at pengutronix.de>
> Cc: Michel Dänzer <michel.daenzer at amd.com>
> Cc: Rob Clark <robdclark at gmail.com>
> Cc: Russell King <rmk+kernel at arm.linux.org.uk>
> Cc: Sinclair Yeh <syeh at vmware.com>
> Cc: Thierry Reding <thierry.reding at gmail.com>
> Cc: Thomas Hellstrom <thellstrom at vmware.com>
> Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
> 
> 
> Emil Velikov (24):
>   drm/amdgpu: add extern C guard for the UAPI header
>   drm/armada: add extern C guard for the UAPI header
>   drm: add extern C guard for the UAPI headers
>   drm/etnaviv: add extern C guard for the UAPI header
>   drm/exynos: add extern C guard for the UAPI header
>   drm/i810: add extern C guard for the UAPI header
>   drm/i915: add extern C guard for the UAPI header
>   drm/mga: add extern C guard for the UAPI header
>   drm/msm: add extern C guard for the UAPI header
>   drm/nouveau: add extern C guard for the UAPI header
>   drm/nouveau: drop drm/ prefix from include
>   drm/omap: add extern C guard for the UAPI header
>   drm/qxl: add extern C guard for the UAPI header
>   drm/qxl: remove XXX comment from the UAPI header
>   drm/r128: add extern C guard for the UAPI header
>   drm/radeon: add extern C guard for the UAPI header
>   drm/savage: add extern C guard for the UAPI header
>   drm/sis: add extern C guard for the UAPI header
>   drm/sis: add missing include drm.h for the UAPI header
>   drm/tegra: add extern C guard for the UAPI header
>   drm/vc4: add extern C guard for the UAPI header
>   drm/via: add extern C guard for the UAPI header
>   drm/virgl: add extern C guard for the UAPI header
>   drm/vmwgfx: add extern C guard for the UAPI header
> 
>  include/uapi/drm/amdgpu_drm.h  |  8 ++++++++
>  include/uapi/drm/armada_drm.h  |  8 ++++++++
>  include/uapi/drm/drm.h         | 16 ++++++++++++++++
>  include/uapi/drm/drm_fourcc.h  |  8 ++++++++
>  include/uapi/drm/drm_mode.h    |  8 ++++++++
>  include/uapi/drm/drm_sarea.h   |  8 ++++++++
>  include/uapi/drm/etnaviv_drm.h |  8 ++++++++
>  include/uapi/drm/exynos_drm.h  |  8 ++++++++
>  include/uapi/drm/i810_drm.h    |  8 ++++++++
>  include/uapi/drm/i915_drm.h    |  8 ++++++++
>  include/uapi/drm/mga_drm.h     |  8 ++++++++
>  include/uapi/drm/msm_drm.h     |  8 ++++++++
>  include/uapi/drm/nouveau_drm.h | 10 +++++++++-
>  include/uapi/drm/omap_drm.h    |  8 ++++++++
>  include/uapi/drm/qxl_drm.h     |  9 ++++++++-
>  include/uapi/drm/r128_drm.h    |  8 ++++++++
>  include/uapi/drm/radeon_drm.h  |  8 ++++++++
>  include/uapi/drm/savage_drm.h  |  8 ++++++++
>  include/uapi/drm/sis_drm.h     | 10 ++++++++++
>  include/uapi/drm/tegra_drm.h   |  8 ++++++++
>  include/uapi/drm/vc4_drm.h     |  8 ++++++++
>  include/uapi/drm/via_drm.h     |  8 ++++++++
>  include/uapi/drm/virtgpu_drm.h |  8 ++++++++
>  include/uapi/drm/vmwgfx_drm.h  |  9 +++++++++
>  24 files changed, 204 insertions(+), 2 deletions(-)
> 
> -- 
> 2.6.2
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list