public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] yavta: Format type errors for non x86 arches
@ 2023-09-19 14:01 Ricardo Ribalda
  2023-09-19 20:07 ` Sakari Ailus
  0 siblings, 1 reply; 13+ messages in thread
From: Ricardo Ribalda @ 2023-09-19 14:01 UTC (permalink / raw)
  To: linux-media, laurent.pinchart; +Cc: Ricardo Ribalda

mipsel64el, ppc64el, ia64, ppc64, sparc64 and x32 have different lenghts
for long long ints, which result in some compilation errors.

Lets add some castings to help the compiler deal with this.

We cannot use the Format macro constants ffrom inttypes because they
seem to not be compatible with kernel (__u64 et al) types.

Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
---
 yavta.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/yavta.c b/yavta.c
index d562863..bf54e4f 100644
--- a/yavta.c
+++ b/yavta.c
@@ -1313,7 +1313,8 @@ static void video_query_menu(struct device *dev,
 			printf("  %u: %.32s%s\n", menu.index, menu.name,
 			       menu.index == value ? " (*)" : "");
 		else
-			printf("  %u: %lld%s\n", menu.index, menu.value,
+			printf("  %u: %lld%s\n", menu.index,
+			       (long long)menu.value,
 			       menu.index == value ? " (*)" : "");
 	};
 }
@@ -1360,7 +1361,7 @@ static void video_print_control_value(const struct v4l2_query_ext_ctrl *query,
 			printf("0x%08x", ctrl->value);
 			break;
 		case V4L2_CTRL_TYPE_INTEGER64:
-			printf("%lld", ctrl->value64);
+			printf("%lld", (long long)ctrl->value64);
 			break;
 		case V4L2_CTRL_TYPE_STRING:
 			printf("%s", ctrl->string);
@@ -1399,9 +1400,11 @@ static int video_get_control(struct device *dev,
 	}
 
 	if (full) {
-		printf("control 0x%08x `%s' min %lld max %lld step %lld default %lld ",
-			query->id, query->name, query->minimum, query->maximum,
-			query->step, query->default_value);
+		printf("control 0x%08x `%s' min %lld max %lld step %llu default %lld ",
+		       query->id, query->name, (long long)query->minimum,
+		       (long long)query->maximum,
+		       (unsigned long long)query->step,
+		       (long long)query->default_value);
 		if (query->nr_of_dims) {
 			for (i = 0; i < query->nr_of_dims; ++i)
 				printf("[%u]", query->dims[i]);
@@ -2190,13 +2193,16 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
 
 		clock_gettime(CLOCK_MONOTONIC, &ts);
 		get_ts_flags(buf.flags, &ts_type, &ts_source);
-		printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
-			(buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
-			v4l2_field_name(buf.field),
-			buf.sequence, video_buffer_bytes_used(dev, &buf),
-			buf.timestamp.tv_sec, buf.timestamp.tv_usec,
-			ts.tv_sec, ts.tv_nsec/1000, fps,
-			ts_type, ts_source);
+		printf("%u (%u) [%c] %s %u %u B %lld.%06lld %lld.%06lld %.3f fps ts %s/%s\n",
+		       i, buf.index,
+		       (buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
+		       v4l2_field_name(buf.field),
+		       buf.sequence, video_buffer_bytes_used(dev, &buf),
+		       (long long)buf.timestamp.tv_sec,
+		       (long long)buf.timestamp.tv_usec,
+		       (long long)ts.tv_sec,
+		       (long long)(ts.tv_nsec / 1000), fps,
+		       ts_type, ts_source);
 
 		last = buf.timestamp;
 
@@ -2252,8 +2258,9 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
 	bps = size/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
 	fps = i/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
 
-	printf("Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
-		i, ts.tv_sec, ts.tv_nsec/1000, fps, bps);
+	printf("Captured %u frames in %llu.%06llu seconds (%f fps, %f B/s).\n",
+	       i, (long long)ts.tv_sec, (long long)(ts.tv_nsec / 1000), fps,
+	       bps);
 
 done:
 	video_free_buffers(dev);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread
* [PATCH] yavta: Format type errors for non x86 arches
@ 2023-09-20 12:59 Ricardo Ribalda
  2023-09-20 13:06 ` Sakari Ailus
  0 siblings, 1 reply; 13+ messages in thread
From: Ricardo Ribalda @ 2023-09-20 12:59 UTC (permalink / raw)
  To: Sakari Ailus, Laurent Pinchart, linux-media, hverkuil; +Cc: Ricardo Ribalda

mipsel64el, ppc64el, ia64, ppc64, sparc64 and x32 have different lenghts
for long long ints, which result in some compilation errors.

Lets add some castings and inttypes macros to help the compiler deal with
this.

We have to use the castings, because kernel types (__u64 et al) does not
seem to be compatible with inttypes macros.

Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
---
 yavta.c | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/yavta.c b/yavta.c
index d562863..d8c9d14 100644
--- a/yavta.c
+++ b/yavta.c
@@ -1313,7 +1313,8 @@ static void video_query_menu(struct device *dev,
 			printf("  %u: %.32s%s\n", menu.index, menu.name,
 			       menu.index == value ? " (*)" : "");
 		else
-			printf("  %u: %lld%s\n", menu.index, menu.value,
+			printf("  %u: %" PRId64 "%s\n", menu.index,
+			       (int64_t)menu.value,
 			       menu.index == value ? " (*)" : "");
 	};
 }
@@ -1360,7 +1361,7 @@ static void video_print_control_value(const struct v4l2_query_ext_ctrl *query,
 			printf("0x%08x", ctrl->value);
 			break;
 		case V4L2_CTRL_TYPE_INTEGER64:
-			printf("%lld", ctrl->value64);
+			printf("%" PRId64, (int64_t)ctrl->value64);
 			break;
 		case V4L2_CTRL_TYPE_STRING:
 			printf("%s", ctrl->string);
@@ -1399,9 +1400,10 @@ static int video_get_control(struct device *dev,
 	}
 
 	if (full) {
-		printf("control 0x%08x `%s' min %lld max %lld step %lld default %lld ",
-			query->id, query->name, query->minimum, query->maximum,
-			query->step, query->default_value);
+		printf("control 0x%08x `%s' min %" PRId64 " max %" PRId64 " step %" PRIu64 " default %" PRId64 " ",
+		       query->id, query->name, (int64_t)query->minimum,
+		       (int64_t)query->maximum, (uint64_t)query->step,
+		       (int64_t)query->default_value);
 		if (query->nr_of_dims) {
 			for (i = 0; i < query->nr_of_dims; ++i)
 				printf("[%u]", query->dims[i]);
@@ -2190,13 +2192,16 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
 
 		clock_gettime(CLOCK_MONOTONIC, &ts);
 		get_ts_flags(buf.flags, &ts_type, &ts_source);
-		printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
-			(buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
-			v4l2_field_name(buf.field),
-			buf.sequence, video_buffer_bytes_used(dev, &buf),
-			buf.timestamp.tv_sec, buf.timestamp.tv_usec,
-			ts.tv_sec, ts.tv_nsec/1000, fps,
-			ts_type, ts_source);
+		printf("%u (%u) [%c] %s %u %u B %" PRId64 ".%06" PRId64 " %" PRId64 ".%06" PRId64 " %.3f fps ts %s/%s\n",
+		       i, buf.index,
+		       (buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
+		       v4l2_field_name(buf.field),
+		       buf.sequence, video_buffer_bytes_used(dev, &buf),
+		       (int64_t)buf.timestamp.tv_sec,
+		       (int64_t)buf.timestamp.tv_usec,
+		       (int64_t)ts.tv_sec,
+		       (int64_t)(ts.tv_nsec / 1000), fps,
+		       ts_type, ts_source);
 
 		last = buf.timestamp;
 
@@ -2252,8 +2257,9 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
 	bps = size/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
 	fps = i/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
 
-	printf("Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
-		i, ts.tv_sec, ts.tv_nsec/1000, fps, bps);
+	printf("Captured %u frames in %" PRId64 ".%06" PRId64 " seconds (%f fps, %f B/s).\n",
+	       i, (int64_t)ts.tv_sec, (int64_t)(ts.tv_nsec / 1000), fps,
+	       bps);
 
 done:
 	video_free_buffers(dev);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2024-09-14  0:27 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-19 14:01 [PATCH] yavta: Format type errors for non x86 arches Ricardo Ribalda
2023-09-19 20:07 ` Sakari Ailus
2023-09-19 20:10   ` Ricardo Ribalda
2023-09-19 20:22     ` Sakari Ailus
2023-09-19 21:03       ` Laurent Pinchart
2023-09-20 12:19         ` Ricardo Ribalda
2023-09-20 12:39           ` Sakari Ailus
2023-09-20 12:58             ` Ricardo Ribalda
  -- strict thread matches above, loose matches on Subject: below --
2023-09-20 12:59 Ricardo Ribalda
2023-09-20 13:06 ` Sakari Ailus
2023-10-20  7:07   ` Ricardo Ribalda Delgado
2024-04-02 13:59     ` Ricardo Ribalda
2024-09-14  0:27       ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox