Message ID | 1362130380-1895-2-git-send-email-lilei@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 03/01/2013 02:32 AM, Lei Li wrote: > Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> > --- > qga/commands-posix.c | 16 ++++++++++++++++ > qga/qapi-schema.json | 16 ++++++++++++++++ > 2 files changed, 32 insertions(+) > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index 0ad73f3..f159e25 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -119,6 +119,22 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err) > /* succeded */ > } > > +int64_t qmp_guest_get_time(Error **errp) > +{ > + int ret; > + qemu_timeval tq; > + int64_t time_ns; > + > + ret = qemu_gettimeofday(&tq); > + if (ret < 0) { > + error_setg_errno(errp, errno, "Failed to get time"); > + return -1; > + } > + > + time_ns = tq.tv_sec * 1000000000LL + tq.tv_usec * 1000; Is it worth a sanity check that the tv_sec scaling doesn't overflow? Of course, that won't happen until far into the future (well beyond the 2038 overflow of 32-bit seconds since Epoch), so it won't hit in OUR lifetime, so I can look the other way. > > ## > +# @guest-get-time: > +# > +# Get the information about guest time relative to the Epoch > +# of 1970-01-01 in UTC/GMT. UTC and GMT are not the same thing. I'd drop the '/GMT'. http://www.diffen.com/difference/GMT_vs_UTC > +# > +# This command try to get the guest's notion of the current > +# time. This sentence is redundant with the first one, and has grammar issues. Drop it. > +# > +# Returns: Time in nanoseconds on success. > +# > +# Since 1.5 > +## > +{ 'command': 'guest-get-time', > + 'returns': 'int' } > + > +## > # @GuestAgentCommandInfo: > # > # Information about guest agent commands. >
On 03/02/2013 01:02 AM, Eric Blake wrote: > On 03/01/2013 02:32 AM, Lei Li wrote: >> Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> >> --- >> qga/commands-posix.c | 16 ++++++++++++++++ >> qga/qapi-schema.json | 16 ++++++++++++++++ >> 2 files changed, 32 insertions(+) >> >> diff --git a/qga/commands-posix.c b/qga/commands-posix.c >> index 0ad73f3..f159e25 100644 >> --- a/qga/commands-posix.c >> +++ b/qga/commands-posix.c >> @@ -119,6 +119,22 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err) >> /* succeded */ >> } >> >> +int64_t qmp_guest_get_time(Error **errp) >> +{ >> + int ret; >> + qemu_timeval tq; >> + int64_t time_ns; >> + >> + ret = qemu_gettimeofday(&tq); >> + if (ret < 0) { >> + error_setg_errno(errp, errno, "Failed to get time"); >> + return -1; >> + } >> + >> + time_ns = tq.tv_sec * 1000000000LL + tq.tv_usec * 1000; > Is it worth a sanity check that the tv_sec scaling doesn't overflow? Of > course, that won't happen until far into the future (well beyond the > 2038 overflow of 32-bit seconds since Epoch), so it won't hit in OUR > lifetime, so I can look the other way. >> >> ## >> +# @guest-get-time: >> +# >> +# Get the information about guest time relative to the Epoch >> +# of 1970-01-01 in UTC/GMT. > UTC and GMT are not the same thing. I'd drop the '/GMT'. > http://www.diffen.com/difference/GMT_vs_UTC Oh, good to know! :) Thanks. >> +# >> +# This command try to get the guest's notion of the current >> +# time. > This sentence is redundant with the first one, and has grammar issues. > Drop it. Sure. > >> +# >> +# Returns: Time in nanoseconds on success. >> +# >> +# Since 1.5 >> +## >> +{ 'command': 'guest-get-time', >> + 'returns': 'int' } >> + >> +## >> # @GuestAgentCommandInfo: >> # >> # Information about guest agent commands. >>
diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 0ad73f3..f159e25 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -119,6 +119,22 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err) /* succeded */ } +int64_t qmp_guest_get_time(Error **errp) +{ + int ret; + qemu_timeval tq; + int64_t time_ns; + + ret = qemu_gettimeofday(&tq); + if (ret < 0) { + error_setg_errno(errp, errno, "Failed to get time"); + return -1; + } + + time_ns = tq.tv_sec * 1000000000LL + tq.tv_usec * 1000; + return time_ns; +} + typedef struct GuestFileHandle { uint64_t id; FILE *fh; diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index d91d903..563600c 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -83,6 +83,22 @@ { 'command': 'guest-ping' } ## +# @guest-get-time: +# +# Get the information about guest time relative to the Epoch +# of 1970-01-01 in UTC/GMT. +# +# This command try to get the guest's notion of the current +# time. +# +# Returns: Time in nanoseconds on success. +# +# Since 1.5 +## +{ 'command': 'guest-get-time', + 'returns': 'int' } + +## # @GuestAgentCommandInfo: # # Information about guest agent commands.
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- qga/commands-posix.c | 16 ++++++++++++++++ qga/qapi-schema.json | 16 ++++++++++++++++ 2 files changed, 32 insertions(+)