[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v3 02/12] qga: Use common time encoding for guest-get-devices 'dri
From: |
Michael Roth |
Subject: |
[PULL v3 02/12] qga: Use common time encoding for guest-get-devices 'driver-date' |
Date: |
Mon, 2 Nov 2020 20:43:34 -0600 |
From: Markus Armbruster <armbru@redhat.com>
guest-get-devices returns 'driver-date' as string in the format
YYYY-MM-DD. Goes back to recent commit 2e4211cee4 "qga: add command
guest-get-devices for reporting VirtIO devices".
We should avoid use of multiple encodings for the same kind of data.
Especially string encodings. Change it to return nanoseconds since
the epoch, like guest-get-time does.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Michael Roth <michael.roth@amd.com>
---
qga/commands-win32.c | 19 +++++++++++--------
qga/qapi-schema.json | 4 ++--
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 879b02b6c3..b01616a992 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1641,6 +1641,12 @@ out:
return head;
}
+static int64_t filetime_to_ns(const FILETIME *tf)
+{
+ return ((((int64_t)tf->dwHighDateTime << 32) | tf->dwLowDateTime)
+ - W32_FT_OFFSET) * 100;
+}
+
int64_t qmp_guest_get_time(Error **errp)
{
SYSTEMTIME ts = {0};
@@ -1657,8 +1663,7 @@ int64_t qmp_guest_get_time(Error **errp)
return -1;
}
- return ((((int64_t)tf.dwHighDateTime << 32) | tf.dwLowDateTime)
- - W32_FT_OFFSET) * 100;
+ return filetime_to_ns(&tf);
}
void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
@@ -2363,7 +2368,6 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
slog("enumerating devices");
for (i = 0; SetupDiEnumDeviceInfo(dev_info, i, &dev_info_data); i++) {
bool skip = true;
- SYSTEMTIME utc_date;
g_autofree LPWSTR name = NULL;
g_autofree LPFILETIME date = NULL;
g_autofree LPWSTR version = NULL;
@@ -2434,13 +2438,12 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
slog("failed to get driver date");
continue;
}
- FileTimeToSystemTime(date, &utc_date);
- device->driver_date = g_strdup_printf("%04d-%02d-%02d",
- utc_date.wYear, utc_date.wMonth, utc_date.wDay);
+ device->driver_date = filetime_to_ns(date);
device->has_driver_date = true;
- slog("driver: %s\ndriver version: %s,%s\n", device->driver_name,
- device->driver_date, device->driver_version);
+ slog("driver: %s\ndriver version: %" PRId64 ",%s\n",
+ device->driver_name, device->driver_date,
+ device->driver_version);
item = g_new0(GuestDeviceInfoList, 1);
item->value = g_steal_pointer(&device);
if (!cur_item) {
diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index f2c81cda2b..c7bfb8bf6a 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -1282,7 +1282,7 @@
# @GuestDeviceInfo:
#
# @driver-name: name of the associated driver
-# @driver-date: driver release date in format YYYY-MM-DD
+# @driver-date: driver release date, in nanoseconds since the epoch
# @driver-version: driver version
# @id: device ID
#
@@ -1291,7 +1291,7 @@
{ 'struct': 'GuestDeviceInfo',
'data': {
'driver-name': 'str',
- '*driver-date': 'str',
+ '*driver-date': 'int',
'*driver-version': 'str',
'*id': 'GuestDeviceId'
} }
--
2.25.1
- [PULL v3 00/12] qemu-ga patch queue for soft-freeze, Michael Roth, 2020/11/02
- [PULL v3 09/12] qga: add ssh-{add,remove}-authorized-keys, Michael Roth, 2020/11/02
- [PULL v3 10/12] qga: add *reset argument to ssh-add-authorized-keys, Michael Roth, 2020/11/02
- [PULL v3 11/12] meson: minor simplification, Michael Roth, 2020/11/02
- [PULL v3 12/12] qga: add ssh-get-authorized-keys, Michael Roth, 2020/11/02
- [PULL v3 01/12] qga: Rename guest-get-devices return member 'address' to 'id', Michael Roth, 2020/11/02
- [PULL v3 02/12] qga: Use common time encoding for guest-get-devices 'driver-date',
Michael Roth <=
- [PULL v3 03/12] qga-win: Fix guest-get-devices error API violations, Michael Roth, 2020/11/02
- [PULL v3 04/12] qga: Flatten simple union GuestDeviceId, Michael Roth, 2020/11/02
- [PULL v3 05/12] qga: add command guest-get-disks, Michael Roth, 2020/11/02
- [PULL v3 06/12] qga: add implementation of guest-get-disks for Linux, Michael Roth, 2020/11/02
- [PULL v3 07/12] qga: add implementation of guest-get-disks for Windows, Michael Roth, 2020/11/02
- [PULL v3 08/12] glib-compat: add g_unix_get_passwd_entry_qemu(), Michael Roth, 2020/11/02
- Re: [PULL v3 00/12] qemu-ga patch queue for soft-freeze, Peter Maydell, 2020/11/03