[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC] Can we convert UTC time to local time in Qemu

From: Gonglei
Subject: Re: [Qemu-devel] [RFC] Can we convert UTC time to local time in Qemu
Date: Wed, 20 May 2015 17:28:56 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 2015/5/20 17:00, Daniel P. Berrange wrote:
> On Wed, May 20, 2015 at 06:29:55AM +0000, Gonglei (Arei) wrote:
>> Hi,
>> At present, Qemu use g_time_val_to_iso8601() to get the UTC added to 
>> error_report()
>> (commit 5e2ac5191), TBH this way is very simply, we just need invoke 
>> standard glib functions to
>> complete the job. 
>> But in the cloud computing and data center scenarios, there are many
>> Other open source components, such as kernel, libvirt, openstack which are 
>> all using local time
>> to record the message logs, only Qemu is using the UTC time. When we want to 
>> find a error
>> message of Qemu, we should convert the UTC time to local time manually, and 
>> unfortunately
>> different countries have different local time, what a trouble thing the 
>> converting is.
>> So, my question is: Can we convert the UTC time to local time in Qemu?
>> Any thoughts? Thanks.
> Actually, libvirt uses UTC for logging almost exclusively for quite a
> while, because AFAIK, there is no async signal safe way to convert to
> localtime in POSIX / glibc
Thanks for correcting me :)


> commit 3ec128989606278635a7c5dfbeee959692d12e15
> Author: Daniel P. Berrange <address@hidden>
> Date:   Tue Nov 29 12:11:01 2011 +0000
>     Add internal APIs for dealing with time
>     The logging APIs need to be able to generate formatted timestamps
>     using only async signal safe functions. This rules out using
>     gmtime/localtime/malloc/gettimeday(!) and much more.
>     Introduce a new internal API which is async signal safe.
>       virTimeMillisNowRaw replacement for gettimeofday. Uses clock_gettime
>                           where available, otherwise falls back to the unsafe
>                           gettimeofday
>       virTimeFieldsNowRaw  replacements for gmtime(), convert a timestamp
>       virTimeFieldsThenRaw into a broken out set of fields. No localtime()
>                            replacement is provided, because converting to
>                            local time is not practical with only async signal
>                            safe APIs.
>       virTimeStringNowRaw  replacements for strftime() which print a timestamp
>       virTimeStringThenRaw into a string, using a pre-determined format, with
>                            a fixed size buffer (VIR_TIME_STRING_BUFLEN)
>     For each of these there is also a version without the Raw postfix
>     which raises a full libvirt error. These versions are not async
>     signal safe
> Regards,
> Daniel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]