diff mbox

tests/gem_seqno_wrap: skip if debugfs entry is not there

Message ID 1357643766-14614-1-git-send-email-mika.kuoppala@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mika Kuoppala Jan. 8, 2013, 11:16 a.m. UTC
Return error code 77 to skip test if debugfs entry is not
available.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 tests/gem_seqno_wrap.c |   43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

Comments

Daniel Vetter Jan. 8, 2013, 11:21 a.m. UTC | #1
On Tue, Jan 08, 2013 at 01:16:06PM +0200, Mika Kuoppala wrote:
> Return error code 77 to skip test if debugfs entry is not
> available.
> 
> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>

Applied (with the bz link added), thanks for the patch.
-Daniel

> ---
>  tests/gem_seqno_wrap.c |   43 +++++++++++++++++++++++++++++--------------
>  1 file changed, 29 insertions(+), 14 deletions(-)
> 
> diff --git a/tests/gem_seqno_wrap.c b/tests/gem_seqno_wrap.c
> index 76a1723..43e3851 100644
> --- a/tests/gem_seqno_wrap.c
> +++ b/tests/gem_seqno_wrap.c
> @@ -49,6 +49,7 @@
>  #include "rendercopy.h"
>  
>  static int devid;
> +static int card_index = 0;
>  static uint32_t last_seqno = 0;
>  
>  static struct intel_batchbuffer *batch_blt;
> @@ -355,7 +356,27 @@ static int run_cmd(char *s)
>  	return r;
>  }
>  
> -static const char *debug_fs_entry = "/sys/kernel/debug/dri/0/i915_next_seqno";
> +static const char *dfs_base = "/sys/kernel/debug/dri";
> +static const char *dfs_entry = "i915_next_seqno";
> +
> +static int dfs_open(int mode)
> +{
> +	char fname[FILENAME_MAX];
> +	int fh;
> +
> +	snprintf(fname, FILENAME_MAX, "%s/%i/%s",
> +		 dfs_base, card_index, dfs_entry);
> +
> +	fh = open(fname, mode);
> +	if (fh == -1) {
> +		fprintf(stderr,
> +			"error %d opening '%s/%d/%s'. too old kernel?\n",
> +			errno, dfs_base, card_index, dfs_entry);
> +		exit(77);
> +	}
> +
> +	return fh;
> +}
>  
>  static int __read_seqno(uint32_t *seqno)
>  {
> @@ -365,12 +386,7 @@ static int __read_seqno(uint32_t *seqno)
>  	char *p;
>  	unsigned long int tmp;
>  
> -	fh = open(debug_fs_entry, O_RDWR);
> -	if (fh == -1) {
> -		perror("open");
> -		fprintf(stderr, "no %s found, too old kernel?\n", debug_fs_entry);
> -		return -errno;
> -	}
> +	fh = dfs_open(O_RDONLY);
>  
>  	r = read(fh, buf, sizeof(buf) - 1);
>  	close(fh);
> @@ -385,8 +401,9 @@ static int __read_seqno(uint32_t *seqno)
>  	if (!p)
>  		p = buf;
>  
> +	errno = 0;
>  	tmp = strtoul(p, NULL, 0);
> -	if (tmp == ULONG_MAX) {
> +	if (tmp == ULONG_MAX && errno) {
>  		perror("strtoul");
>  		return -errno;
>  	}
> @@ -425,12 +442,7 @@ static int write_seqno(uint32_t seqno)
>  	if (options.dontwrap)
>  		return 0;
>  
> -	fh = open(debug_fs_entry, O_RDWR);
> -	if (fh == -1) {
> -		perror("open");
> -		return -errno;
> -	}
> -
> +	fh = dfs_open(O_RDWR);
>  	assert(snprintf(buf, sizeof(buf), "0x%x", seqno) > 0);
>  
>  	r = write(fh, buf, strnlen(buf, sizeof(buf)));
> @@ -627,6 +639,9 @@ int main(int argc, char **argv)
>  
>  	parse_options(argc, argv);
>  
> +	card_index = drm_get_card(0);
> +	assert(card_index != -1);
> +
>  	srandom(time(NULL));
>  
>  	while(options.rounds == 0 || wcount < options.rounds) {
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/tests/gem_seqno_wrap.c b/tests/gem_seqno_wrap.c
index 76a1723..43e3851 100644
--- a/tests/gem_seqno_wrap.c
+++ b/tests/gem_seqno_wrap.c
@@ -49,6 +49,7 @@ 
 #include "rendercopy.h"
 
 static int devid;
+static int card_index = 0;
 static uint32_t last_seqno = 0;
 
 static struct intel_batchbuffer *batch_blt;
@@ -355,7 +356,27 @@  static int run_cmd(char *s)
 	return r;
 }
 
-static const char *debug_fs_entry = "/sys/kernel/debug/dri/0/i915_next_seqno";
+static const char *dfs_base = "/sys/kernel/debug/dri";
+static const char *dfs_entry = "i915_next_seqno";
+
+static int dfs_open(int mode)
+{
+	char fname[FILENAME_MAX];
+	int fh;
+
+	snprintf(fname, FILENAME_MAX, "%s/%i/%s",
+		 dfs_base, card_index, dfs_entry);
+
+	fh = open(fname, mode);
+	if (fh == -1) {
+		fprintf(stderr,
+			"error %d opening '%s/%d/%s'. too old kernel?\n",
+			errno, dfs_base, card_index, dfs_entry);
+		exit(77);
+	}
+
+	return fh;
+}
 
 static int __read_seqno(uint32_t *seqno)
 {
@@ -365,12 +386,7 @@  static int __read_seqno(uint32_t *seqno)
 	char *p;
 	unsigned long int tmp;
 
-	fh = open(debug_fs_entry, O_RDWR);
-	if (fh == -1) {
-		perror("open");
-		fprintf(stderr, "no %s found, too old kernel?\n", debug_fs_entry);
-		return -errno;
-	}
+	fh = dfs_open(O_RDONLY);
 
 	r = read(fh, buf, sizeof(buf) - 1);
 	close(fh);
@@ -385,8 +401,9 @@  static int __read_seqno(uint32_t *seqno)
 	if (!p)
 		p = buf;
 
+	errno = 0;
 	tmp = strtoul(p, NULL, 0);
-	if (tmp == ULONG_MAX) {
+	if (tmp == ULONG_MAX && errno) {
 		perror("strtoul");
 		return -errno;
 	}
@@ -425,12 +442,7 @@  static int write_seqno(uint32_t seqno)
 	if (options.dontwrap)
 		return 0;
 
-	fh = open(debug_fs_entry, O_RDWR);
-	if (fh == -1) {
-		perror("open");
-		return -errno;
-	}
-
+	fh = dfs_open(O_RDWR);
 	assert(snprintf(buf, sizeof(buf), "0x%x", seqno) > 0);
 
 	r = write(fh, buf, strnlen(buf, sizeof(buf)));
@@ -627,6 +639,9 @@  int main(int argc, char **argv)
 
 	parse_options(argc, argv);
 
+	card_index = drm_get_card(0);
+	assert(card_index != -1);
+
 	srandom(time(NULL));
 
 	while(options.rounds == 0 || wcount < options.rounds) {