On Tue, Jul 21, 2009 at 12:21 PM, Julien Cristau <jcris...@debian.org>wrote:

> On Mon, Jul 20, 2009 at 19:17:01 +0300, Pauli Nieminen wrote:
>
> > >From b7e77b71d1f2d8ff6741e534911e09f10e3f3d4e Mon Sep 17 00:00:00 2001
> > From: Pauli Nieminen <suok...@gmail.com>
> > Date: Mon, 20 Jul 2009 14:39:57 +0300
> > Subject: [PATCH 01/15] libdrm: Add function attribute for debug
> > functions to let gcc check parameter correctness.
> >
> > ---
> >  libdrm/xf86drm.c |    5 ++++-
> >  1 files changed, 4 insertions(+), 1 deletions(-)
> >
> > diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
> > index 26dd812..4214b91 100644
> > --- a/libdrm/xf86drm.c
> > +++ b/libdrm/xf86drm.c
> > @@ -107,13 +107,16 @@ void drmSetServerInfo(drmServerInfoPtr info)
> >   * \internal
> >   * This function is a wrapper around vfprintf().
> >   */
> > +static int drmDebugPrint(const char *format, va_list ap)
> > __attribute__((format(printf,1,0)));
> >
> why add a forward declaration instead of adding the attribute to the
> function definition?  also your patches are whitespace damaged.
>

That is limitation of gcc. attributes has to be given in declaration. At
least that is what manual says . I didn't test.

>
> >  static int drmDebugPrint(const char *format, va_list ap)
> >  {
> >      return vfprintf(stderr, format, ap);
> >  }
> >
> > -static int (*drm_debug_print)(const char *format, va_list ap) =
> drmDebugPrint;
> > +static int (*drm_debug_print)(const char *format, va_list ap)
> > __attribute__((format(printf,1,0))) = drmDebugPrint;
> > +
> > +void drmMsg(const char *format, ...)
> __attribute__((format(printf,1,2)));
> >
> >  void
> >  drmMsg(const char *format, ...)
>
> Cheers,
> Julien
>
Attached the patches to prevent the damage to them.

Pauli
From b7e77b71d1f2d8ff6741e534911e09f10e3f3d4e Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 14:39:57 +0300
Subject: [PATCH 01/19] libdrm: Add function attribute for debug functions to let gcc check parameter correctness.

---
 libdrm/xf86drm.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 26dd812..4214b91 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -107,13 +107,16 @@ void drmSetServerInfo(drmServerInfoPtr info)
  * \internal
  * This function is a wrapper around vfprintf().
  */
+static int drmDebugPrint(const char *format, va_list ap) __attribute__((format(printf,1,0)));
 
 static int drmDebugPrint(const char *format, va_list ap)
 {
     return vfprintf(stderr, format, ap);
 }
 
-static int (*drm_debug_print)(const char *format, va_list ap) = drmDebugPrint;
+static int (*drm_debug_print)(const char *format, va_list ap) __attribute__((format(printf,1,0))) = drmDebugPrint;
+
+void drmMsg(const char *format, ...) __attribute__((format(printf,1,2)));
 
 void
 drmMsg(const char *format, ...)
-- 
1.6.3.3

From 7b9950e3e3e4d9a456addcdbbcdefaf4cc44a5c0 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 14:46:06 +0300
Subject: [PATCH 02/19] libdrm: Add __attribute__ macro to hide gcc specific function attributes for compiler not supporting them.

---
 libdrm/xf86drm.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 4214b91..a942233 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -92,6 +92,14 @@
 #define DRM_NODE_CONTROL 0
 #define DRM_NODE_RENDER 1
 
+/*
+ * define macro for gcc specific __attribute__ if using alternative compiler
+ */
+#ifndef __GNUC__
+#define  __attribute__(x)  /*empty*/
+#endif
+
+
 static drmServerInfoPtr drm_server_info;
 
 void drmSetServerInfo(drmServerInfoPtr info)
-- 
1.6.3.3

From 7a737a95e3c9bdfdf18b648678f41911259adceb Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 14:49:38 +0300
Subject: [PATCH 03/19] libdrm: Add function declaration to header for drmSetDebugMsgFunction.

---
 libdrm/xf86drm.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/libdrm/xf86drm.h b/libdrm/xf86drm.h
index c1d173c..f4d6504 100644
--- a/libdrm/xf86drm.h
+++ b/libdrm/xf86drm.h
@@ -663,6 +663,7 @@ extern int  drmSLLookupNeighbors(void *l, unsigned long key,
 extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened);
 extern void drmCloseOnce(int fd);
 extern void drmMsg(const char *format, ...);
+extern void drmSetDebugMsgFunction(int (*debug_msg_ptr)(const char *format, va_list ap));
 
 extern int drmSetMaster(int fd);
 extern int drmDropMaster(int fd);
-- 
1.6.3.3

From f20a4ea99e79cd0155a56112c272c228dac463f8 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 15:34:13 +0300
Subject: [PATCH 04/19] libdrm: Fix unsigned/signed coparision of -1 value

gid_t is unsigned in gnu libc this makes it impossible to check if group id is set to negative by xserver.
---
 libdrm/xf86drm.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index a942233..d168258 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -340,7 +340,8 @@ static int drmOpenDevice(long dev, int minor, int type)
 	drm_server_info->get_perms(&serv_group, &serv_mode);
 	devmode  = serv_mode ? serv_mode : DRM_DEV_MODE;
 	devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
-	group = (serv_group >= 0) ? serv_group : DRM_DEV_GID;
+	/* gid_t is unsigned so we have to check that value isn't equal to "-1" */
+	group = (serv_group != (gid_t)-1) ? serv_group : DRM_DEV_GID;
     }
 
 #if !defined(UDEV)
-- 
1.6.3.3

From 3eb4a3493f13c48bee1b2453f5ecead0ba498c51 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 15:45:41 +0300
Subject: [PATCH 05/19] libdrm: Fix drmOpenDevice to take dev_t type as parameter.

This fixes signed/unsigned comparission between st.st_dev and dev.
---
 libdrm/xf86drm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index d168258..30e9616 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -323,7 +323,7 @@ static int chown_check_return(const char *path, uid_t owner, gid_t group)
  * special file node with the major and minor numbers specified by \p dev and
  * parent directory if necessary and was called by root.
  */
-static int drmOpenDevice(long dev, int minor, int type)
+static int drmOpenDevice(dev_t dev, int minor, int type)
 {
     stat_t          st;
     char            buf[64];
-- 
1.6.3.3

From 78bfacedfb3b81968b2171a942101d323b1782cb Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 15:48:48 +0300
Subject: [PATCH 06/19] libdrm: Fix loop index variable type to match the type of count

---
 libdrm/xf86drm.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 30e9616..2507829 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -2177,8 +2177,8 @@ int drmGetClient(int fd, int idx, int *auth, int *pid, int *uid,
 
 int drmGetStats(int fd, drmStatsT *stats)
 {
-    drm_stats_t s;
-    int         i;
+    drm_stats_t   s;
+    unsigned long i;
 
     if (drmIoctl(fd, DRM_IOCTL_GET_STATS, &s))
 	return -errno;
-- 
1.6.3.3

From 7fcfbf715644d2268236b8a19d1f2f83c952d72b Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 16:25:59 +0300
Subject: [PATCH 07/19] libdrm: Fix random number generator to use unsigned seed.

This fixes wanring about unsigned/signed comparision.
Also make it easier to compile test program using -D switch.
---
 libdrm/xf86drmRandom.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libdrm/xf86drmRandom.c b/libdrm/xf86drmRandom.c
index ecab9e2..f488630 100644
--- a/libdrm/xf86drmRandom.c
+++ b/libdrm/xf86drmRandom.c
@@ -74,7 +74,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#ifndef RANDOM_MAIN
 #define RANDOM_MAIN 0
+#endif
 
 #if !RANDOM_MAIN
 # include "xf86drm.h"
@@ -98,7 +100,7 @@ typedef struct RandomState {
     unsigned long q;		/* m div a */
     unsigned long r;		/* m mod a */
     unsigned long check;
-    long          seed;
+    unsigned long seed;
 } RandomState;
 
 #if RANDOM_MAIN
@@ -153,7 +155,7 @@ unsigned long drmRandom(void *state)
     hi      = s->seed / s->q;
     lo      = s->seed % s->q;
     s->seed = s->a * lo - s->r * hi;
-    if (s->seed <= 0) s->seed += s->m;
+    if (s->seed > s->m) s->seed += s->m;
 
     return s->seed;
 }
-- 
1.6.3.3

From 10a9bf298be4695242bcdb63bcfad720e03bf040 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 16:31:54 +0300
Subject: [PATCH 08/19] libdrm: Make gcc to understand that pointers are realy pointers.

---
 libdrm/xf86drmSL.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libdrm/xf86drmSL.c b/libdrm/xf86drmSL.c
index 58aefac..22e3b92 100644
--- a/libdrm/xf86drmSL.c
+++ b/libdrm/xf86drmSL.c
@@ -335,16 +335,16 @@ void drmSLDump(void *l)
 		   list->magic, SL_ENTRY_MAGIC);
 	}
 	printf("\nEntry %p <0x%08lx, %p> has %2d levels\n",
-	       entry, entry->key, entry->value, entry->levels);
+	       (void*)entry, entry->key, entry->value, entry->levels);
 	for (i = 0; i < entry->levels; i++) {
 	    if (entry->forward[i]) {
 		printf("   %2d: %p <0x%08lx, %p>\n",
 		       i,
-		       entry->forward[i],
+		       (void*)entry->forward[i],
 		       entry->forward[i]->key,
 		       entry->forward[i]->value);
 	    } else {
-		printf("   %2d: %p\n", i, entry->forward[i]);
+		printf("   %2d: %p\n", i, (void*)entry->forward[i]);
 	    }
 	}
     }
-- 
1.6.3.3

From 69cad004e5355e4adcee753de4da91c98949d3df Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 16:50:20 +0300
Subject: [PATCH 09/19] libdrm: Make drmAllocCpy static.

---
 libdrm/xf86drmMode.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c
index ea11207..180d3ef 100644
--- a/libdrm/xf86drmMode.c
+++ b/libdrm/xf86drmMode.c
@@ -55,7 +55,7 @@
  * Util functions
  */
 
-void* drmAllocCpy(void *array, int count, int entry_size)
+static void* drmAllocCpy(void *array, int count, int entry_size)
 {
 	char *r;
 	int i;
-- 
1.6.3.3

From 6ad9d2f1495df9bbdecbe4e7676da75d48ba3719 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 16:55:21 +0300
Subject: [PATCH 10/19] libdrm: Make drmAllocCpy use only single memcpy call instead of calling memcpy in loop.

---
 libdrm/xf86drmMode.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c
index 180d3ef..0d080b8 100644
--- a/libdrm/xf86drmMode.c
+++ b/libdrm/xf86drmMode.c
@@ -58,7 +58,6 @@
 static void* drmAllocCpy(void *array, int count, int entry_size)
 {
 	char *r;
-	int i;
 
 	if (!count || !array || !entry_size)
 		return 0;
@@ -66,8 +65,7 @@ static void* drmAllocCpy(void *array, int count, int entry_size)
 	if (!(r = drmMalloc(count*entry_size)))
 		return 0;
 
-	for (i = 0; i < count; i++)
-		memcpy(r+(entry_size*i), array+(entry_size*i), entry_size);
+	memcpy(r, array, count*entry_size);
 
 	return r;
 }
-- 
1.6.3.3

From 0c8b7939fc95084d77063eb8de78b0724d3d4058 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 17:00:45 +0300
Subject: [PATCH 11/19] libdrm: Make pci id numbers unsigned for sscanf.

---
 libdrm/xf86drmMode.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c
index 0d080b8..9b4d5fb 100644
--- a/libdrm/xf86drmMode.c
+++ b/libdrm/xf86drmMode.c
@@ -574,7 +574,8 @@ int drmCheckModesettingSupported(const char *busid)
 {
 #ifdef __linux__
 	char pci_dev_dir[1024];
-	int domain, bus, dev, func;
+	unsigned int domain, bus, dev;
+	int func;
 	DIR *sysdir;
 	struct dirent *dent;
 	int found = 0, ret;
-- 
1.6.3.3

From dea4cebdb49556ab06930bd5a4d303ce1c0b85c7 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 17:19:55 +0300
Subject: [PATCH 12/19] intel: Move debug output after setting the value.

---
 libdrm/intel/intel_bufmgr_fake.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libdrm/intel/intel_bufmgr_fake.c b/libdrm/intel/intel_bufmgr_fake.c
index 969c03d..7259690 100644
--- a/libdrm/intel/intel_bufmgr_fake.c
+++ b/libdrm/intel/intel_bufmgr_fake.c
@@ -287,10 +287,10 @@ _fence_wait_internal(drm_intel_bufmgr_fake *bufmgr_fake, int seq)
       return;
    }
 
-   DBG("wait 0x%08x\n", iw.irq_seq);
-
    iw.irq_seq = seq;
 
+   DBG("wait 0x%08x\n", iw.irq_seq);
+
    /* The kernel IRQ_WAIT implementation is all sorts of broken.
     * 1) It returns 1 to 0x7fffffff instead of using the full 32-bit unsigned
     *    range.
-- 
1.6.3.3

From 9043299720ef5ecac1fe575b0bbda19b81720dd8 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 18:00:43 +0300
Subject: [PATCH 13/19] libdrm/radeon: Remove unussed variables and make printf happy with explicity void* cast from struct radeon_bo*.

---
 libdrm/radeon/radeon_bo.h     |    2 +-
 libdrm/radeon/radeon_bo_gem.c |    4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/libdrm/radeon/radeon_bo.h b/libdrm/radeon/radeon_bo.h
index 597d0ef..3bb15af 100644
--- a/libdrm/radeon/radeon_bo.h
+++ b/libdrm/radeon/radeon_bo.h
@@ -84,7 +84,7 @@ static inline void _radeon_bo_debug(struct radeon_bo *bo,
                                     int line)
 {
     fprintf(stderr, "%s %p 0x%08X 0x%08X 0x%08X [%s %s %d]\n",
-            op, bo, bo->handle, bo->size, bo->cref, file, func, line);
+            op, (void*)bo, bo->handle, bo->size, bo->cref, file, func, line);
 }
 
 static inline struct radeon_bo *_radeon_bo_open(struct radeon_bo_manager *bom,
diff --git a/libdrm/radeon/radeon_bo_gem.c b/libdrm/radeon/radeon_bo_gem.c
index 558b93a..4ebf986 100644
--- a/libdrm/radeon/radeon_bo_gem.c
+++ b/libdrm/radeon/radeon_bo_gem.c
@@ -162,7 +162,7 @@ static int bo_map(struct radeon_bo *bo, int write)
                             sizeof(args));
     if (r) {
         fprintf(stderr, "error mapping %p 0x%08X (error = %d)\n",
-                bo, bo->handle, r);
+                (void*)bo, bo->handle, r);
         return r;
     }
     ptr = mmap(0, args.size, PROT_READ|PROT_WRITE, MAP_SHARED, bo->bom->fd, args.addr_ptr);
@@ -239,7 +239,6 @@ uint32_t radeon_gem_name_bo(struct radeon_bo *bo)
 
 int radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name)
 {
-    struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo;
     struct drm_gem_flink flink;
     int r;
 
@@ -254,7 +253,6 @@ int radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name)
 
 int radeon_gem_set_domain(struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain)
 {
-    struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo;
     struct drm_radeon_gem_set_domain args;
     int r;
 
-- 
1.6.3.3

From 36aef4bf07154ef6d206f15ff1c036a7f8e368a9 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 18:33:03 +0300
Subject: [PATCH 14/19] libdrm/radeon: Add config.h include to enable POSIX extensions for strdup call.

---
 libdrm/radeon/radeon_track.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/libdrm/radeon/radeon_track.c b/libdrm/radeon/radeon_track.c
index 1623906..09f8725 100644
--- a/libdrm/radeon/radeon_track.c
+++ b/libdrm/radeon/radeon_track.c
@@ -27,6 +27,9 @@
  * Authors:
  *      Jérôme Glisse <gli...@freedesktop.org>
  */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-- 
1.6.3.3

From 9c0cd0ba5bb5966498cad2c5a8c69ec24c4c8e34 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 18:40:49 +0300
Subject: [PATCH 15/19] Fix signed/unsigned comparison warning

---
 libdrm/radeon/radeon_cs_gem.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/libdrm/radeon/radeon_cs_gem.c b/libdrm/radeon/radeon_cs_gem.c
index 264b067..43b136f 100644
--- a/libdrm/radeon/radeon_cs_gem.c
+++ b/libdrm/radeon/radeon_cs_gem.c
@@ -354,21 +354,22 @@ static void cs_gem_print(struct radeon_cs *cs, FILE *file)
     unsigned opcode;
     unsigned reg;
     unsigned cnt;
-    int i, j;
+    unsigned i,j;
 
     for (i = 0; i < cs->cdw;) {
-        cnt = CP_PACKET_GET_COUNT(cs->packets[i]);
+        /* First word in CP is not counted so has to add one to value */
+        cnt = CP_PACKET_GET_COUNT(cs->packets[i]) + 1;
         switch (CP_PACKET_GET_TYPE(cs->packets[i])) {
         case PACKET_TYPE0:
-            fprintf(file, "Pkt0 at %d (%d dwords):\n", i, cnt + 1);
+            fprintf(file, "Pkt0 at %d (%d dwords):\n", i, cnt);
             reg = CP_PACKET0_GET_REG(cs->packets[i]);
             if (CP_PACKET0_GET_ONE_REG_WR(cs->packets[i++])) {
-                for (j = 0; j <= cnt; j++) {
+                for (j = 0; j < cnt; j++) {
                     fprintf(file, "    0x%08X -> 0x%04X\n",
                             cs->packets[i++], reg);
                 }
             } else {
-                for (j = 0; j <= cnt; j++) {
+                for (j = 0; j < cnt; j++) {
                     fprintf(file, "    0x%08X -> 0x%04X\n",
                             cs->packets[i++], reg);
                     reg += 4;
@@ -410,7 +411,7 @@ static void cs_gem_print(struct radeon_cs *cs, FILE *file)
                 fprintf(file, "Unknow opcode 0x%02X at %d\n", opcode, i);
                 return;
             }
-            for (j = 0; j <= cnt; j++) {
+            for (j = 0; j < cnt; j++) {
                 fprintf(file, "        0x%08X\n", cs->packets[i++]);
             }
             break;
-- 
1.6.3.3

From 1cd7a914be3fc5ee8aabdd2297710f5c781b555f Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 21:36:57 +0300
Subject: [PATCH 16/19] libdrm/tests: Fix compiler warnings in dristat.c.

---
 tests/dristat.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/tests/dristat.c b/tests/dristat.c
index 48c3b51..2551f82 100644
--- a/tests/dristat.c
+++ b/tests/dristat.c
@@ -26,7 +26,9 @@
  * Authors: Rickard E. (Rik) Faith <fa...@valinux.com>
  * 
  */
-
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -96,6 +98,7 @@ static void getvm(int fd)
 	case DRM_SHM:            typename = "SHM"; break;
 	case DRM_AGP:            typename = "AGP"; break;
 	case DRM_SCATTER_GATHER: typename = "SG";  break;
+	case DRM_CONSISTENT:     typename = "CON"; break;
 	default:                 typename = "???"; break;
 	}
 
@@ -108,7 +111,7 @@ static void getvm(int fd)
 	flagname[6] = '\0';
 	
 	printf("    %4d 0x%08lx 0x%08lx %3.3s %6.6s 0x%08lx ",
-	       i, offset, (unsigned long)size, typename, flagname, handle);
+	       i, (unsigned long)offset, (unsigned long)size, typename, flagname, (unsigned long)handle);
 	if (mtrr < 0) printf("none\n");
 	else          printf("%4d\n", mtrr);
     }
@@ -133,7 +136,8 @@ static void getclients(int fd)
 	sprintf(buf, "/proc/%d/cmdline", pid);
 	memset(cmd, 0, sizeof(cmd));
 	if ((procfd = open(buf, O_RDONLY, 0)) >= 0) {
-	    read(procfd, cmd, sizeof(cmd)-1);
+	    while (read(procfd, cmd, sizeof(cmd)-1) == -1 && errno == EINTR)
+	    {}
 	    close(procfd);
 	}
 	if (*cmd) {
@@ -184,7 +188,7 @@ static void printhuman(unsigned long value, const char *name, int mult)
 static void getstats(int fd, int i)
 {
     drmStatsT prev, curr;
-    int       j;
+    unsigned int j;
     double    rate;
     
     printf("  System statistics:\n");
-- 
1.6.3.3

From c7926a7f1e738bf8dbafc7e5fb8e25e1f0b3f6a8 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 21:37:54 +0300
Subject: [PATCH 17/19] libdrm/tests: Fix compiler warnings in drmstat.c.

---
 tests/drmstat.c |   33 +++++++++++++++++++++++++--------
 1 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/tests/drmstat.c b/tests/drmstat.c
index ed2aeb6..cea97db 100644
--- a/tests/drmstat.c
+++ b/tests/drmstat.c
@@ -28,6 +28,7 @@
  * 
  */
 
+#include <alloca.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -69,13 +70,15 @@ static void getversion(int fd)
 	printf( "No driver available\n" );
     }
 }
-	
-void handler(int fd, void *oldctx, void *newctx)
+
+#if 0
+static void handler(int fd, void *oldctx, void *newctx)
 {
     printf("Got fd %d\n", fd);
 }
+#endif
 
-void process_sigio(char *device)
+static void process_sigio(char *device)
 {
     int              fd;
 
@@ -89,6 +92,13 @@ void process_sigio(char *device)
     for (;;) sleep(60);
 }
 
+#define system(command) \
+    do { \
+    int rv = system(command); \
+    if (rv == 0) \
+        exit(1); \
+    } while(0);
+
 int main(int argc, char **argv)
 {
     int            c;
@@ -104,6 +114,7 @@ int main(int argc, char **argv)
     int            loops;
     char           buf[1024];
     int            i;
+    unsigned int   j;
     drmBufInfoPtr  info;
     drmBufMapPtr   bufs;
     drmLockPtr     lock;
@@ -115,7 +126,10 @@ int main(int argc, char **argv)
 	case 'F':
 	    count  = strtoul(optarg, NULL, 0);
 	    if (!fork()) {
-		dup(fd);
+		if (dup(fd) != -1)
+		{
+			exit(1);
+		}
 		sleep(count);
 	    }
 	    close(fd);
@@ -278,7 +292,7 @@ int main(int argc, char **argv)
 		drmError(r, argv[0]);
 		return 1;
 	    }
-	    printf("0x%04lx byte shm added at 0x%08lx\n", size, handle);
+	    printf("0x%04lx byte shm added at 0x%08lx\n", size, (unsigned long)handle);
 	    sprintf(buf, "cat /proc/dri/0/vm");
 	    system(buf);
 	    break;
@@ -326,9 +340,9 @@ int main(int argc, char **argv)
 	    printf("\n");
 	    if (c == 'w') {
 		printf("===== WRITING =====\n");
-		for (i = 0; i < size; i+=2) {
-		    ((char *)address)[i]   = i & 0xff;
-		    ((char *)address)[i+1] = i & 0xff;
+		for (j = 0; j < size; j+=2) {
+		    ((char *)address)[j]   = j & 0xff;
+		    ((char *)address)[j+1] = j & 0xff;
 		}
 	    }
 	    printf("===== READING =====\n");
@@ -414,6 +428,9 @@ int main(int argc, char **argv)
 
     return r; 
 }
+void
+xf86VDrvMsgVerb(int scrnIndex, int type, int verb, const char *format,
+                va_list args) __attribute__((format(printf, 4, 0)));
 
 void
 xf86VDrvMsgVerb(int scrnIndex, int type, int verb, const char *format,
-- 
1.6.3.3

From 654356f6625bac34003313a3d7c54cb7b21df706 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 21:39:02 +0300
Subject: [PATCH 18/19] libdrm/tests: Fix compiler warnings in modeprint.c.

---
 tests/modeprint/modeprint.c |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/tests/modeprint/modeprint.c b/tests/modeprint/modeprint.c
index 595d444..9cde77d 100644
--- a/tests/modeprint/modeprint.c
+++ b/tests/modeprint/modeprint.c
@@ -50,20 +50,20 @@ int crtcs;
 int fbs;
 char *module_name;
 
-const char* getConnectionText(drmModeConnection conn)
+static const char* getConnectionText(drmModeConnection conn)
 {
 	switch (conn) {
 	case DRM_MODE_CONNECTED:
 		return "connected";
 	case DRM_MODE_DISCONNECTED:
 		return "disconnected";
-	default:
+	case DRM_MODE_UNKNOWNCONNECTION:
 		return "unknown";
 	}
-
+	return 0;
 }
 
-int printMode(struct drm_mode_modeinfo *mode)
+static int printMode(drmModeModeInfoPtr mode)
 {
 	if (full_modes) {
 		printf("Mode: %s\n", mode->name);
@@ -87,9 +87,9 @@ int printMode(struct drm_mode_modeinfo *mode)
 	return 0;
 }
 
-int printProperty(int fd, drmModeResPtr res, drmModePropertyPtr props, uint64_t value)
+static int printProperty(int fd, drmModeResPtr res, drmModePropertyPtr props, uint64_t value)
 {
-	const unsigned char *name = NULL;
+	const char *name = NULL;
 	int j;
 
 	printf("Property: %s\n", props->name);
@@ -120,8 +120,11 @@ int printProperty(int fd, drmModeResPtr res, drmModePropertyPtr props, uint64_t
 		}
 
 	} else {
+#if 0
+		/* FIXME: Why here was this if statment? */
 		if (!strncmp(props->name, "DPMS", 4))
 			;
+#endif
 
 		for (j = 0; j < props->count_enums; j++) {
 			printf("\t\t%lld = %s\n", props->enums[j].value, props->enums[j].name);
@@ -139,10 +142,10 @@ int printProperty(int fd, drmModeResPtr res, drmModePropertyPtr props, uint64_t
 	return 0;
 }
 
-int printConnector(int fd, drmModeResPtr res, drmModeConnectorPtr connector, uint32_t id)
+static int printConnector(int fd, drmModeResPtr res, drmModeConnectorPtr connector, uint32_t id)
 {
 	int i = 0;
-	struct drm_mode_modeinfo *mode = NULL;
+	drmModeModeInfoPtr mode = NULL;
 	drmModePropertyPtr props;
 
 	printf("Connector: %d-%d\n", connector->connector_type, connector->connector_type_id);
@@ -187,7 +190,7 @@ int printConnector(int fd, drmModeResPtr res, drmModeConnectorPtr connector, uin
 	return 0;
 }
 
-int printEncoder(int fd, drmModeResPtr res, drmModeEncoderPtr encoder, uint32_t id)
+static int printEncoder(int fd, drmModeResPtr res, drmModeEncoderPtr encoder, uint32_t id)
 {
 	printf("Encoder\n");
 	printf("\tid     :%i\n", id);
@@ -198,7 +201,7 @@ int printEncoder(int fd, drmModeResPtr res, drmModeEncoderPtr encoder, uint32_t
 	return 0;
 }
 
-int printCrtc(int fd, drmModeResPtr res, drmModeCrtcPtr crtc, uint32_t id)
+static int printCrtc(int fd, drmModeResPtr res, drmModeCrtcPtr crtc, uint32_t id)
 {
 	printf("Crtc\n");
 	printf("\tid             : %i\n", id);
@@ -206,13 +209,13 @@ int printCrtc(int fd, drmModeResPtr res, drmModeCrtcPtr crtc, uint32_t id)
 	printf("\ty              : %i\n", crtc->y);
 	printf("\twidth          : %i\n", crtc->width);
 	printf("\theight         : %i\n", crtc->height);
-	printf("\tmode           : %p\n", &crtc->mode);
+	printf("\tmode           : %p\n", (void*)&crtc->mode);
 	printf("\tgamma size     : %d\n", crtc->gamma_size);
 
 	return 0;
 }
 
-int printFrameBuffer(int fd, drmModeResPtr res, drmModeFBPtr fb)
+static int printFrameBuffer(int fd, drmModeResPtr res, drmModeFBPtr fb)
 {
 	printf("Framebuffer\n");
 	printf("\thandle    : %i\n", fb->handle);
@@ -226,7 +229,7 @@ int printFrameBuffer(int fd, drmModeResPtr res, drmModeFBPtr fb)
 	return 0;
 }
 
-int printRes(int fd, drmModeResPtr res)
+static int printRes(int fd, drmModeResPtr res)
 {
 	int i;
 	drmModeFBPtr fb;
@@ -302,7 +305,7 @@ int printRes(int fd, drmModeResPtr res)
 	return 0;
 }
 
-void args(int argc, char **argv)
+static void args(int argc, char **argv)
 {
 	int i;
 
-- 
1.6.3.3

From 7d07667d09bc4500374387483e8a2e75ca158424 Mon Sep 17 00:00:00 2001
From: Pauli Nieminen <suok...@gmail.com>
Date: Mon, 20 Jul 2009 21:39:43 +0300
Subject: [PATCH 19/19] libdrm/tests: Fix compiler warnings in modetest.c.

---
 tests/modetest/modetest.c |   48 +++++++++++++++++++++-----------------------
 1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 6c69a57..7b1bb1b 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -63,12 +63,12 @@ int fd, modes;
 
 struct type_name {
 	int type;
-	char *name;
+	const char *name;
 };
 
 #define type_name_fn(res) \
-char * res##_str(int type) {			\
-	int i;						\
+static const char * res##_str(int type) {			\
+	unsigned int i;						\
 	for (i = 0; i < ARRAY_SIZE(res##_names); i++) { \
 		if (res##_names[i].type == type)	\
 			return res##_names[i].name;	\
@@ -112,7 +112,7 @@ struct type_name connector_type_names[] = {
 
 type_name_fn(connector_type)
 
-void dump_encoders(void)
+static void dump_encoders(void)
 {
 	drmModeEncoder *encoder;
 	int i;
@@ -138,7 +138,7 @@ void dump_encoders(void)
 	printf("\n");
 }
 
-void dump_mode(drmModeModeInfo *mode)
+static void dump_mode(drmModeModeInfo *mode)
 {
 	printf("  %s %.02f %d %d %d %d %d %d %d %d\n",
 	       mode->name,
@@ -166,7 +166,7 @@ dump_props(drmModeConnector *connector)
 	}
 }
 
-void dump_connectors(void)
+static void dump_connectors(void)
 {
 	drmModeConnector *connector;
 	int i, j;
@@ -207,7 +207,7 @@ void dump_connectors(void)
 	printf("\n");
 }
 
-void dump_crtcs(void)
+static void dump_crtcs(void)
 {
 	drmModeCrtc *crtc;
 	int i;
@@ -234,7 +234,7 @@ void dump_crtcs(void)
 	printf("\n");
 }
 
-void dump_framebuffers(void)
+static void dump_framebuffers(void)
 {
 	drmModeFB *fb;
 	int i;
@@ -251,7 +251,8 @@ void dump_framebuffers(void)
 		}
 		printf("%d\t(%dx%d)\t%d\n",
 		       fb->fb_id,
-		       fb->width, fb->height);
+		       fb->width, fb->height,
+		       fb->bpp);
 
 		drmModeFreeFB(fb);
 	}
@@ -266,7 +267,7 @@ void dump_framebuffers(void)
  * can bind it with a free crtc.
  */
 struct connector {
-	int id;
+	unsigned int id;
 	char mode_str[64];
 	drmModeModeInfo *mode;
 	drmModeEncoder *encoder;
@@ -277,7 +278,7 @@ static void
 connector_find_mode(struct connector *c)
 {
 	drmModeConnector *connector;
-	int i, j, size, ret, width, height;
+	int i, j;
 
 	/* First, find the connector & mode */
 	c->mode = NULL;
@@ -348,7 +349,7 @@ create_test_buffer(drm_intel_bufmgr *bufmgr,
 {
 	drm_intel_bo *bo;
 	unsigned int *fb_ptr;
-	int size, ret, i, stride;
+	int size, i, stride;
 	div_t d;
 	cairo_surface_t *surface;
 	cairo_t *cr;
@@ -460,13 +461,10 @@ create_test_buffer(drm_intel_bufmgr *bufmgr,
 static void
 set_mode(struct connector *c, int count)
 {
-	drmModeConnector *connector;
-	drmModeEncoder *encoder = NULL;
-	struct drm_mode_modeinfo *mode = NULL;
 	drm_intel_bufmgr *bufmgr;
 	drm_intel_bo *bo;
 	unsigned int fb_id;
-	int i, j, ret, width, height, x, stride;
+	int i, ret, width, height, x, stride;
 
 	width = 0;
 	height = 0;
@@ -497,7 +495,6 @@ set_mode(struct connector *c, int count)
 
 	x = 0;
 	for (i = 0; i < count; i++) {
-		int crtc_id;
 		if (c[i].mode == NULL)
 			continue;
 
@@ -519,7 +516,7 @@ extern char *optarg;
 extern int optind, opterr, optopt;
 static char optstr[] = "ecpmfs:";
 
-void usage(char *name)
+static void usage(char *name)
 {
 	fprintf(stderr, "usage: %s [-ecpmf]\n", name);
 	fprintf(stderr, "\t-e\tlist encoders\n");
@@ -539,9 +536,10 @@ int main(int argc, char **argv)
 {
 	int c;
 	int encoders = 0, connectors = 0, crtcs = 0, framebuffers = 0;
-	char *modules[] = { "i915", "radeon" };
-	char *modeset = NULL, *mode, *connector;
-	int i, connector_id, count = 0;
+	const char *modules[] = { "i915", "radeon" };
+	char *modeset = NULL;
+	unsigned int i;
+	int count = 0;
 	struct connector con_args[2];
 	
 	opterr = 0;
@@ -565,13 +563,13 @@ int main(int argc, char **argv)
 		case 's':
 			modeset = strdup(optarg);
 			con_args[count].crtc = -1;
-			if (sscanf(optarg, "%d:%64s",
+			if (sscanf(optarg, "%u:%64s",
 				   &con_args[count].id,
-				   &con_args[count].mode_str) != 2 &&
-			    sscanf(optarg, "%...@%d:%64s",
+				   con_args[count].mode_str) != 2 &&
+			    sscanf(optarg, "%...@%d:%64s",
 				   &con_args[count].id,
 				   &con_args[count].crtc,
-				   &con_args[count].mode_str) != 3)
+				   con_args[count].mode_str) != 3)
 				usage(argv[0]);
 			count++;				      
 			break;
-- 
1.6.3.3

------------------------------------------------------------------------------
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to