The following patches make the type of handles in libdrm
more consistent. 
They allow us to later change the type of drm_handle_t
from unsigned long to unsigned int to allow 32bit and 64bit
clients and Xservers to share data structures.

Included are two patches: one for libdrm as part of DRM
and one for the libdrm parts (xf86drm.[ch]) in Mesa.
Once this has gotten accepted I will commit these files
in X myself.

Egbert.

Index: libdrm/xf86drm.c
===================================================================
RCS file: /cvs/dri/drm/libdrm/xf86drm.c,v
retrieving revision 1.51
diff -u -r1.51 xf86drm.c
--- libdrm/xf86drm.c    4 Apr 2005 04:08:29 -0000       1.51
+++ libdrm/xf86drm.c    15 Jul 2005 10:30:22 -0000
@@ -888,7 +888,7 @@
     map.type    = type;
     map.flags   = flags;
     if (ioctl(fd, DRM_IOCTL_ADD_MAP, &map)) return -errno;
-    if (handle) *handle = (drm_handle_t)map.handle;
+    if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
     return 0;
 }
 
@@ -896,7 +896,7 @@
 {
     drm_map_t map;
 
-    map.handle = (void *)handle;
+    map.handle = (void *)(unsigned long)handle;
 
     if(ioctl(fd, DRM_IOCTL_RM_MAP, &map)) return -errno;
     return 0;
@@ -1499,7 +1499,7 @@
  * arguments in a drm_agp_buffer structure.
  */
 int drmAgpAlloc(int fd, unsigned long size, unsigned long type,
-               unsigned long *address, unsigned long *handle)
+               unsigned long *address, drm_handle_t *handle)
 {
     drm_agp_buffer_t b;
 
@@ -1526,7 +1526,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_FREE ioctl, passing the
  * argument in a drm_agp_buffer structure.
  */
-int drmAgpFree(int fd, unsigned long handle)
+int drmAgpFree(int fd, drm_handle_t handle)
 {
     drm_agp_buffer_t b;
 
@@ -1550,7 +1550,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_BIND ioctl, passing the
  * argument in a drm_agp_binding structure.
  */
-int drmAgpBind(int fd, unsigned long handle, unsigned long offset)
+int drmAgpBind(int fd, drm_handle_t handle, unsigned long offset)
 {
     drm_agp_binding_t b;
 
@@ -1573,7 +1573,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_UNBIND ioctl, passing
  * the argument in a drm_agp_binding structure.
  */
-int drmAgpUnbind(int fd, unsigned long handle)
+int drmAgpUnbind(int fd, drm_handle_t handle)
 {
     drm_agp_binding_t b;
 
@@ -1763,7 +1763,7 @@
     return i.id_device;
 }
 
-int drmScatterGatherAlloc(int fd, unsigned long size, unsigned long *handle)
+int drmScatterGatherAlloc(int fd, unsigned long size, drm_handle_t *handle)
 {
     drm_scatter_gather_t sg;
 
@@ -1775,7 +1775,7 @@
     return 0;
 }
 
-int drmScatterGatherFree(int fd, unsigned long handle)
+int drmScatterGatherFree(int fd, drm_handle_t handle)
 {
     drm_scatter_gather_t sg;
 
@@ -1942,7 +1942,7 @@
     drm_ctx_priv_map_t map;
 
     map.ctx_id = ctx_id;
-    map.handle = (void *)handle;
+    map.handle = (void *)(unsigned long)handle;
 
     if (ioctl(fd, DRM_IOCTL_SET_SAREA_CTX, &map)) return -errno;
     return 0;
@@ -1955,7 +1955,7 @@
     map.ctx_id = ctx_id;
 
     if (ioctl(fd, DRM_IOCTL_GET_SAREA_CTX, &map)) return -errno;
-    if (handle) *handle = (drm_handle_t)map.handle;
+    if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
 
     return 0;
 }
@@ -1972,7 +1972,7 @@
     *size   = map.size;
     *type   = map.type;
     *flags  = map.flags;
-    *handle = (unsigned long)map.handle;
+    *handle = (drm_handle_t)(unsigned long)map.handle;
     *mtrr   = map.mtrr;
     return 0;
 }
@@ -1995,7 +1995,7 @@
 int drmGetStats(int fd, drmStatsT *stats)
 {
     drm_stats_t s;
-    int         i;
+    unsigned int i;
 
     if (ioctl(fd, DRM_IOCTL_GET_STATS, &s)) return -errno;
 
Index: libdrm/xf86drm.h
===================================================================
RCS file: /cvs/dri/drm/libdrm/xf86drm.h,v
retrieving revision 1.6
diff -u -r1.6 xf86drm.h
--- libdrm/xf86drm.h    1 Feb 2005 22:09:46 -0000       1.6
+++ libdrm/xf86drm.h    15 Jul 2005 10:30:22 -0000
@@ -577,11 +577,11 @@
 extern int           drmAgpEnable(int fd, unsigned long mode);
 extern int           drmAgpAlloc(int fd, unsigned long size,
                                 unsigned long type, unsigned long *address,
-                                unsigned long *handle);
-extern int           drmAgpFree(int fd, unsigned long handle);
-extern int          drmAgpBind(int fd, unsigned long handle,
+                                drm_handle_t *handle);
+extern int           drmAgpFree(int fd, drm_handle_t handle);
+extern int          drmAgpBind(int fd, drm_handle_t handle,
                                unsigned long offset);
-extern int           drmAgpUnbind(int fd, unsigned long handle);
+extern int           drmAgpUnbind(int fd, drm_handle_t handle);
 
 /* AGP/GART info: authenticated client and/or X */
 extern int           drmAgpVersionMajor(int fd);
@@ -596,8 +596,8 @@
 
 /* PCI scatter/gather support: X server (root) only */
 extern int           drmScatterGatherAlloc(int fd, unsigned long size,
-                                          unsigned long *handle);
-extern int           drmScatterGatherFree(int fd, unsigned long handle);
+                                          drm_handle_t *handle);
+extern int           drmScatterGatherFree(int fd, drm_handle_t handle);
 
 extern int           drmWaitVBlank(int fd, drmVBlankPtr vbl);
 
Index: src/mesa/drivers/dri/dri_client/xf86drm.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/dri_client/xf86drm.c,v
retrieving revision 1.3
diff -u -r1.3 xf86drm.c
--- src/mesa/drivers/dri/dri_client/xf86drm.c   22 Mar 2005 13:34:27 -0000      
1.3
+++ src/mesa/drivers/dri/dri_client/xf86drm.c   15 Jul 2005 09:48:04 -0000
@@ -892,7 +892,7 @@
     map.type    = type;
     map.flags   = flags;
     if (ioctl(fd, DRM_IOCTL_ADD_MAP, &map)) return -errno;
-    if (handle) *handle = (drm_handle_t)map.handle;
+    if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
     return 0;
 }
 
@@ -900,7 +900,7 @@
 {
     drm_map_t map;
 
-    map.handle = (void *)handle;
+    map.handle = (void *)(unsigned long)handle;
 
     if(ioctl(fd, DRM_IOCTL_RM_MAP, &map)) return -errno;
     return 0;
@@ -1045,7 +1045,7 @@
 {
     static unsigned long pagesize_mask = 0;
 
-    if (fd < 0) return -EINVAL;
+   if (fd < 0) return -EINVAL;
 
     if (!pagesize_mask)
        pagesize_mask = getpagesize() - 1;
@@ -1503,7 +1503,7 @@
  * arguments in a drm_agp_buffer structure.
  */
 int drmAgpAlloc(int fd, unsigned long size, unsigned long type,
-               unsigned long *address, unsigned long *handle)
+               unsigned long *address, drm_handle_t *handle)
 {
     drm_agp_buffer_t b;
 
@@ -1530,7 +1530,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_FREE ioctl, passing the
  * argument in a drm_agp_buffer structure.
  */
-int drmAgpFree(int fd, unsigned long handle)
+int drmAgpFree(int fd, drm_handle_t handle)
 {
     drm_agp_buffer_t b;
 
@@ -1554,7 +1554,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_BIND ioctl, passing the
  * argument in a drm_agp_binding structure.
  */
-int drmAgpBind(int fd, unsigned long handle, unsigned long offset)
+int drmAgpBind(int fd, drm_handle_t handle, unsigned long offset)
 {
     drm_agp_binding_t b;
 
@@ -1577,7 +1577,7 @@
  * This function is a wrapper around the DRM_IOCTL_AGP_UNBIND ioctl, passing
  * the argument in a drm_agp_binding structure.
  */
-int drmAgpUnbind(int fd, unsigned long handle)
+int drmAgpUnbind(int fd, drm_handle_t handle)
 {
     drm_agp_binding_t b;
 
@@ -1767,7 +1767,7 @@
     return i.id_device;
 }
 
-int drmScatterGatherAlloc(int fd, unsigned long size, unsigned long *handle)
+int drmScatterGatherAlloc(int fd, unsigned long size, drm_handle_t *handle)
 {
     drm_scatter_gather_t sg;
 
@@ -1779,7 +1779,7 @@
     return 0;
 }
 
-int drmScatterGatherFree(int fd, unsigned long handle)
+int drmScatterGatherFree(int fd, drm_handle_t handle)
 {
     drm_scatter_gather_t sg;
 
@@ -1946,7 +1946,7 @@
     drm_ctx_priv_map_t map;
 
     map.ctx_id = ctx_id;
-    map.handle = (void *)handle;
+    map.handle = (void *)(unsigned long)handle;
 
     if (ioctl(fd, DRM_IOCTL_SET_SAREA_CTX, &map)) return -errno;
     return 0;
@@ -1959,7 +1959,7 @@
     map.ctx_id = ctx_id;
 
     if (ioctl(fd, DRM_IOCTL_GET_SAREA_CTX, &map)) return -errno;
-    if (handle) *handle = (drm_handle_t)map.handle;
+    if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
 
     return 0;
 }
@@ -1976,7 +1976,7 @@
     *size   = map.size;
     *type   = map.type;
     *flags  = map.flags;
-    *handle = (unsigned long)map.handle;
+    *handle = (drm_handle_t)(unsigned long)map.handle;
     *mtrr   = map.mtrr;
     return 0;
 }
@@ -1999,7 +1999,7 @@
 int drmGetStats(int fd, drmStatsT *stats)
 {
     drm_stats_t s;
-    int         i;
+    unsigned int i;
 
     if (ioctl(fd, DRM_IOCTL_GET_STATS, &s)) return -errno;
 
Index: src/mesa/drivers/dri/dri_client/imports/xf86drm.h
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/dri_client/imports/xf86drm.h,v
retrieving revision 1.3
diff -u -r1.3 xf86drm.h
--- src/mesa/drivers/dri/dri_client/imports/xf86drm.h   14 Feb 2005 06:57:27 
-0000      1.3
+++ src/mesa/drivers/dri/dri_client/imports/xf86drm.h   15 Jul 2005 09:48:04 
-0000
@@ -575,11 +575,11 @@
 extern int           drmAgpEnable(int fd, unsigned long mode);
 extern int           drmAgpAlloc(int fd, unsigned long size,
                                 unsigned long type, unsigned long *address,
-                                unsigned long *handle);
-extern int           drmAgpFree(int fd, unsigned long handle);
-extern int          drmAgpBind(int fd, unsigned long handle,
+                                drm_handle_t *handle);
+extern int           drmAgpFree(int fd, drm_handle_t handle);
+extern int          drmAgpBind(int fd, drm_handle_t handle,
                                unsigned long offset);
-extern int           drmAgpUnbind(int fd, unsigned long handle);
+extern int           drmAgpUnbind(int fd, drm_handle_t handle);
 
 /* AGP/GART info: authenticated client and/or X */
 extern int           drmAgpVersionMajor(int fd);
@@ -594,8 +594,8 @@
 
 /* PCI scatter/gather support: X server (root) only */
 extern int           drmScatterGatherAlloc(int fd, unsigned long size,
-                                          unsigned long *handle);
-extern int           drmScatterGatherFree(int fd, unsigned long handle);
+                                          drm_handle_t *handle);
+extern int           drmScatterGatherFree(int fd, drm_handle_t handle);
 
 extern int           drmWaitVBlank(int fd, drmVBlankPtr vbl);
 

Reply via email to