On 15/7/25 14:45, Fabiano Rosas wrote:
The migration code has a function that converts a time value (us) to a
string with the proper suffix. Move it to cutils since it's generic
enough that it could be reused.
Suggested-by: Philippe Mathieu-Daudé <phi...@linaro.org>
Signed-off-by: Fabiano Rosas <faro...@suse.de>
---
include/qemu/cutils.h | 1 +
migration/migration-hmp-cmds.c | 17 ++---------------
util/cutils.c | 13 +++++++++++++
3 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h
index 36c68ce86c..7621726621 100644
--- a/include/qemu/cutils.h
+++ b/include/qemu/cutils.h
@@ -171,6 +171,7 @@ int qemu_strtosz_MiB(const char *nptr, const char **end,
uint64_t *result);
int qemu_strtosz_metric(const char *nptr, const char **end, uint64_t *result);
char *size_to_str(uint64_t val);
+char *time_us_to_str(uint64_t val);
s/val/us/
/**
* freq_to_str:
diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c
index bb954881d7..1706f3a0f7 100644
--- a/migration/migration-hmp-cmds.c
+++ b/migration/migration-hmp-cmds.c
@@ -52,19 +52,6 @@ static void migration_global_dump(Monitor *mon)
ms->clear_bitmap_shift);
}
-static const gchar *format_time_str(uint64_t us)
-{
- const char *units[] = {"us", "ms", "sec"};
- int index = 0;
-
- while (us > 1000 && index + 1 < ARRAY_SIZE(units)) {
- us /= 1000;
- index++;
- }
-
- return g_strdup_printf("%"PRIu64" %s", us, units[index]);
-}
-
static void migration_dump_blocktime(Monitor *mon, MigrationInfo *info)
{
if (info->has_postcopy_blocktime) {
@@ -121,8 +108,8 @@ static void migration_dump_blocktime(Monitor *mon,
MigrationInfo *info)
monitor_printf(mon, "Postcopy Latency Distribution:\n");
while (item) {
- g_autofree const gchar *from = format_time_str(1UL << count);
- g_autofree const gchar *to = format_time_str(1UL << (count + 1));
+ g_autofree const gchar *from = time_us_to_str(1UL << count);
+ g_autofree const gchar *to = time_us_to_str(1UL << (count + 1));
monitor_printf(mon, " [ %8s - %8s ]: %10"PRIu64"\n",
from, to, item->value);
diff --git a/util/cutils.c b/util/cutils.c
index 9803f11a59..023793211a 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -1004,6 +1004,19 @@ char *freq_to_str(uint64_t freq_hz)
return g_strdup_printf("%0.3g %sHz", freq, si_prefix(exp10));
}
+char *time_us_to_str(uint64_t us)
+{
+ const char *units[] = {"us", "ms", "sec"};
(static)
+ int index = 0;
+
+ while (us > 1000 && index + 1 < ARRAY_SIZE(units)) {
+ us /= 1000;
+ index++;
+ }
+
+ return g_strdup_printf("%"PRIu64" %s", us, units[index]);
+}
Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>
Thanks!