Replace size_t with an ugly, ugly hack. This was done so that code in the

core X-server would compile. Hopefully, this will soon be replaced with
    explicitly sized types (i.e., uint32_t) and everyone will be happy.
main
Ian Romanick 2004-06-01 16:17:32 +00:00
parent 024fd4b150
commit f994b1f31b
2 changed files with 42 additions and 8 deletions

View File

@ -148,6 +148,22 @@ typedef struct drm_hw_lock {
} drm_hw_lock_t; } 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. * DRM_IOCTL_VERSION ioctl argument type.
* *
@ -157,11 +173,11 @@ typedef struct drm_version {
int version_major; /**< Major version */ int version_major; /**< Major version */
int version_minor; /**< Minor version */ int version_minor; /**< Minor version */
int version_patchlevel;/**< Patch level */ 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 */ 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 */ 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 */ char *desc; /**< User-space buffer to hold desc */
} drm_version_t; } drm_version_t;
@ -172,10 +188,11 @@ typedef struct drm_version {
* \sa drmGetBusid() and drmSetBusId(). * \sa drmGetBusid() and drmSetBusId().
*/ */
typedef struct drm_unique { 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 */ char *unique; /**< Unique name for driver instantiation */
} drm_unique_t; } drm_unique_t;
#undef DRM_SIZE_T
typedef struct drm_list { typedef struct drm_list {
int count; /**< Length of user-space structures */ int count; /**< Length of user-space structures */

View File

@ -148,6 +148,22 @@ typedef struct drm_hw_lock {
} drm_hw_lock_t; } 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. * DRM_IOCTL_VERSION ioctl argument type.
* *
@ -157,11 +173,11 @@ typedef struct drm_version {
int version_major; /**< Major version */ int version_major; /**< Major version */
int version_minor; /**< Minor version */ int version_minor; /**< Minor version */
int version_patchlevel;/**< Patch level */ 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 */ 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 */ 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 */ char *desc; /**< User-space buffer to hold desc */
} drm_version_t; } drm_version_t;
@ -172,10 +188,11 @@ typedef struct drm_version {
* \sa drmGetBusid() and drmSetBusId(). * \sa drmGetBusid() and drmSetBusId().
*/ */
typedef struct drm_unique { 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 */ char *unique; /**< Unique name for driver instantiation */
} drm_unique_t; } drm_unique_t;
#undef DRM_SIZE_T
typedef struct drm_list { typedef struct drm_list {
int count; /**< Length of user-space structures */ int count; /**< Length of user-space structures */