All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/24] drm: add extern C guard for the UAPI headers
@ 2016-04-21 20:17 Emil Velikov
  2016-04-21 20:17 ` [PATCH 01/24] drm/amdgpu: add extern C guard for the UAPI header Emil Velikov
                   ` (25 more replies)
  0 siblings, 26 replies; 41+ messages in thread
From: Emil Velikov @ 2016-04-21 20:17 UTC (permalink / raw)
  To: dri-devel
  Cc: emil.l.velikov, David Howells, Laurent Pinchart, Daniel Vetter,
	Thomas Hellstrom, Tomi Valkeinen, Brian Paul, Ben Skeggs,
	Russell King, Dave Airlie, Andrzej Hajda, Michel Dänzer,
	Alex Deucher, Christian König

[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 ?


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@amd.com>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Brian Paul <brianp@vmware.com>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Erik Faye-Lund <kusmabite@gmail.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Michel Dänzer <michel.daenzer@amd.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Sinclair Yeh <syeh@vmware.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Tomi Valkeinen <tomi.valkeinen@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 41+ messages in thread
* [PATCH 00/24] drm: add extern C guard for the UAPI headers
@ 2016-04-21 19:42 Emil Velikov
       [not found] ` <1461267765-10785-1-git-send-email-emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 41+ messages in thread
From: Emil Velikov @ 2016-04-21 19:42 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Erik Faye-Lund, emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w,
	Eric Anholt, Laurent Pinchart, Daniel Vetter, Thomas Hellstrom,
	Sinclair Yeh, Tomi Valkeinen, Brian Paul, Ben Skeggs,
	Russell King, Jani Nikula, Inki Dae, Christian Gmeiner,
	Dave Airlie, Gerd Hoffmann, Andrzej Hajda, Michel Dänzer,
	Rob Clark, Alex Deucher, Christian König, Lucas Stach

Hi all,

As some of you may know there some subtle distinction between C and C++ 
structs, 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 ?


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@amd.com>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Brian Paul <brianp@vmware.com>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Erik Faye-Lund <kusmabite@gmail.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Michel Dänzer <michel.daenzer@amd.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Sinclair Yeh <syeh@vmware.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Tomi Valkeinen <tomi.valkeinen@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

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2016-04-28 22:56 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-21 20:17 [PATCH 00/24] drm: add extern C guard for the UAPI headers Emil Velikov
2016-04-21 20:17 ` [PATCH 01/24] drm/amdgpu: add extern C guard for the UAPI header Emil Velikov
2016-04-21 20:17 ` [PATCH 02/24] drm/armada: " Emil Velikov
2016-04-21 20:17 ` [PATCH 03/24] drm: add extern C guard for the UAPI headers Emil Velikov
2016-04-21 20:17 ` [PATCH 04/24] drm/etnaviv: add extern C guard for the UAPI header Emil Velikov
2016-04-27 15:13   ` Christian Gmeiner
2016-04-21 20:17 ` [PATCH 05/24] drm/exynos: " Emil Velikov
2016-04-21 20:17 ` [PATCH 06/24] drm/i810: " Emil Velikov
2016-04-22  8:36   ` Daniel Vetter
2016-04-21 20:17 ` [PATCH 07/24] drm/i915: " Emil Velikov
2016-04-21 20:17 ` [PATCH 08/24] drm/mga: " Emil Velikov
2016-04-21 20:17 ` [PATCH 09/24] drm/msm: " Emil Velikov
2016-04-21 20:17 ` [PATCH 10/24] drm/nouveau: " Emil Velikov
2016-04-21 20:17 ` [PATCH 11/24] drm/nouveau: drop drm/ prefix from include Emil Velikov
2016-04-21 20:17 ` [PATCH 12/24] drm/omap: add extern C guard for the UAPI header Emil Velikov
2016-04-28  8:18   ` Tomi Valkeinen
2016-04-21 20:17 ` [PATCH 13/24] drm/qxl: " Emil Velikov
2016-04-21 20:17 ` [PATCH 14/24] drm/qxl: remove XXX comment from " Emil Velikov
2016-04-21 20:17 ` [PATCH 15/24] drm/r128: add extern C guard for " Emil Velikov
2016-04-21 20:17 ` [PATCH 16/24] drm/radeon: " Emil Velikov
2016-04-21 20:17 ` [PATCH 17/24] drm/savage: " Emil Velikov
2016-04-21 20:17 ` [PATCH 18/24] drm/sis: " Emil Velikov
2016-04-21 20:17 ` [PATCH 19/24] drm/sis: add missing include drm.h " Emil Velikov
2016-04-22  8:37   ` Daniel Vetter
2016-04-26 23:37     ` Dave Airlie
2016-04-27 21:36       ` Emil Velikov
2016-04-21 20:17 ` [PATCH 20/24] drm/tegra: add extern C guard " Emil Velikov
2016-04-22 12:02   ` Thierry Reding
2016-04-21 20:17 ` [PATCH 21/24] drm/vc4: " Emil Velikov
2016-04-21 20:17 ` [PATCH 22/24] drm/via: " Emil Velikov
2016-04-21 20:17 ` [PATCH 23/24] drm/virgl: " Emil Velikov
2016-04-21 20:17 ` [PATCH 24/24] drm/vmwgfx: " Emil Velikov
2016-04-22  8:34 ` [PATCH 00/24] drm: add extern C guard for the UAPI headers Daniel Vetter
2016-04-27  9:47 ` Russell King - ARM Linux
2016-04-27 21:45   ` Emil Velikov
2016-04-27 21:57     ` Dave Airlie
2016-04-27 22:40       ` Emil Velikov
2016-04-28 13:19     ` Alex Deucher
2016-04-28 22:58       ` Ben Skeggs
2016-04-28 14:11     ` Russell King - ARM Linux
  -- strict thread matches above, loose matches on Subject: below --
2016-04-21 19:42 Emil Velikov
     [not found] ` <1461267765-10785-1-git-send-email-emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-04-21 19:42   ` [PATCH 20/24] drm/tegra: add extern C guard for the UAPI header Emil Velikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.