summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shared-core/drm.h25
-rw-r--r--shared/drm.h25
2 files changed, 42 insertions, 8 deletions
diff --git a/shared-core/drm.h b/shared-core/drm.h
index ceba2424..f7508b16 100644
--- a/shared-core/drm.h
+++ b/shared-core/drm.h
@@ -148,6 +148,22 @@ typedef struct drm_hw_lock {
} drm_hw_lock_t;
+/* This is beyond ugly, and only works on GCC. However, it allows me to use
+ * drm.h in places (i.e., in the X-server) where I can't use size_t. The real
+ * fix is to use uint32_t instead of size_t, but that fix will break existing
+ * LP64 (i.e., PowerPC64, SPARC64, IA-64, Alpha, etc.) systems. That *will*
+ * eventually happen, though. I chose 'unsigned long' to be the fallback type
+ * because that works on all the platforms I know about. Hopefully, the
+ * real fix will happen before that bites us.
+ */
+
+#ifdef __SIZE_TYPE__
+# define DRM_SIZE_T __SIZE_TYPE__
+#else
+# warning "__SIZE_TYPE__ not defined. Assuming sizeof(size_t) == sizeof(unsigned long)!"
+# define DRM_SIZE_T unsigned long
+#endif
+
/**
* DRM_IOCTL_VERSION ioctl argument type.
*
@@ -157,11 +173,11 @@ typedef struct drm_version {
int version_major; /**< Major version */
int version_minor; /**< Minor version */
int version_patchlevel;/**< Patch level */
- size_t name_len; /**< Length of name buffer */
+ DRM_SIZE_T name_len; /**< Length of name buffer */
char *name; /**< Name of driver */
- size_t date_len; /**< Length of date buffer */
+ DRM_SIZE_T date_len; /**< Length of date buffer */
char *date; /**< User-space buffer to hold date */
- size_t desc_len; /**< Length of desc buffer */
+ DRM_SIZE_T desc_len; /**< Length of desc buffer */
char *desc; /**< User-space buffer to hold desc */
} drm_version_t;
@@ -172,10 +188,11 @@ typedef struct drm_version {
* \sa drmGetBusid() and drmSetBusId().
*/
typedef struct drm_unique {
- size_t unique_len; /**< Length of unique */
+ DRM_SIZE_T unique_len; /**< Length of unique */
char *unique; /**< Unique name for driver instantiation */
} drm_unique_t;
+#undef DRM_SIZE_T
typedef struct drm_list {
int count; /**< Length of user-space structures */
diff --git a/shared/drm.h b/shared/drm.h
index ceba2424..f7508b16 100644
--- a/shared/drm.h
+++ b/shared/drm.h
@@ -148,6 +148,22 @@ typedef struct drm_hw_lock {
} drm_hw_lock_t;
+/* This is beyond ugly, and only works on GCC. However, it allows me to use
+ * drm.h in places (i.e., in the X-server) where I can't use size_t. The real
+ * fix is to use uint32_t instead of size_t, but that fix will break existing
+ * LP64 (i.e., PowerPC64, SPARC64, IA-64, Alpha, etc.) systems. That *will*
+ * eventually happen, though. I chose 'unsigned long' to be the fallback type
+ * because that works on all the platforms I know about. Hopefully, the
+ * real fix will happen before that bites us.
+ */
+
+#ifdef __SIZE_TYPE__
+# define DRM_SIZE_T __SIZE_TYPE__
+#else
+# warning "__SIZE_TYPE__ not defined. Assuming sizeof(size_t) == sizeof(unsigned long)!"
+# define DRM_SIZE_T unsigned long
+#endif
+
/**
* DRM_IOCTL_VERSION ioctl argument type.
*
@@ -157,11 +173,11 @@ typedef struct drm_version {
int version_major; /**< Major version */
int version_minor; /**< Minor version */
int version_patchlevel;/**< Patch level */
- size_t name_len; /**< Length of name buffer */
+ DRM_SIZE_T name_len; /**< Length of name buffer */
char *name; /**< Name of driver */
- size_t date_len; /**< Length of date buffer */
+ DRM_SIZE_T date_len; /**< Length of date buffer */
char *date; /**< User-space buffer to hold date */
- size_t desc_len; /**< Length of desc buffer */
+ DRM_SIZE_T desc_len; /**< Length of desc buffer */
char *desc; /**< User-space buffer to hold desc */
} drm_version_t;
@@ -172,10 +188,11 @@ typedef struct drm_version {
* \sa drmGetBusid() and drmSetBusId().
*/
typedef struct drm_unique {
- size_t unique_len; /**< Length of unique */
+ DRM_SIZE_T unique_len; /**< Length of unique */
char *unique; /**< Unique name for driver instantiation */
} drm_unique_t;
+#undef DRM_SIZE_T
typedef struct drm_list {
int count; /**< Length of user-space structures */