[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms
From: |
Laurent Vivier |
Subject: |
Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms |
Date: |
Wed, 23 Oct 2019 16:45:07 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
Le 23/10/2019 à 16:23, Eric Blake a écrit :
> On 10/23/19 9:15 AM, Frediano Ziglio wrote:
>>>
>>> On 10/23/19 8:42 AM, Laurent Vivier wrote:
>>>> Le 23/10/2019 à 14:26, Frediano Ziglio a écrit :
>>>>> Signed-off-by: Frediano Ziglio <address@hidden>
>>>>> ---
>>>>> util/qemu-timer.c | 6 +-----
>>>>> 1 file changed, 1 insertion(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/util/qemu-timer.c b/util/qemu-timer.c
>>>>> index d428fec567..094a20a05a 100644
>>>>> --- a/util/qemu-timer.c
>>>>> +++ b/util/qemu-timer.c
>>>>> @@ -322,11 +322,7 @@ int qemu_timeout_ns_to_ms(int64_t ns)
>>>>> ms = DIV_ROUND_UP(ns, SCALE_MS);
>>>>> /* To avoid overflow problems, limit this to 2^31, i.e.
>>>>> approx 25
>>>>> days */
>>>>> - if (ms > (int64_t) INT32_MAX) {
>>>>> - ms = INT32_MAX;
>>>>> - }
>>>>> -
>>>>> - return (int) ms;
>>>>> + return (int) MIN(ms, (int64_t) INT32_MAX);
>>>>> }
>>>
>>> Why so many casts? It should also work as:
>>>
>>> return MIN(ms, INT32_MAX);
>>>
>>
>> This was former version. Laurent pointed out that MIN macro
>> is using ternary operator which is expected to find the same time
>> on second and third part so the cast inside the MIN macro.
>> The cast before MIN was kept from previous code.
>
> The C rules for ternary type promotion guarantee that the MIN macro
> produces the correct type without the cast ('cond ? int64_t : int32_t'
> produces int64_t).
gdb seems to disagree with that:
(gdb) whatis l
type = long long
(gdb) whatis i
type = int
(gdb) whatis 1 ? l : i
type = long long
(gdb) whatis 0 ? l : i
type = int
It's on what I based my previous comment.
But both approaches are correct in the end.
Thanks,
Laurent
- Re: [PATCH 1/3] util/async: avoid useless cast, Laurent Vivier, 2019/10/21
- [PATCH 1/3] util/async: avoid useless cast, Frediano Ziglio, 2019/10/23
- [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Frediano Ziglio, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Laurent Vivier, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Eric Blake, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Frediano Ziglio, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Eric Blake, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms,
Laurent Vivier <=
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Eric Blake, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Laurent Vivier, 2019/10/23
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Laurent Vivier, 2019/10/24
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Eric Blake, 2019/10/24
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Laurent Vivier, 2019/10/24
- Re: [PATCH 3/3] qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms, Eric Blake, 2019/10/24
[PATCH 2/3] event_notifier: avoid dandling file descriptor in event_notifier_cleanup, Frediano Ziglio, 2019/10/23
Re: [PATCH 1/3] util/async: avoid useless cast, Laurent Vivier, 2019/10/23