qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 08/12] linux-user: Add support for setting alsa timer enhance


From: Laurent Vivier
Subject: Re: [PATCH 08/12] linux-user: Add support for setting alsa timer enhanced read using ioctl
Date: Wed, 15 Jan 2020 22:52:49 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1

Le 15/01/2020 à 20:17, Filip Bozuta a écrit :
> 
> On 15.1.20. 17:37, Arnd Bergmann wrote:
>> On Wed, Jan 15, 2020 at 5:32 PM Laurent Vivier <address@hidden> wrote:
>>> Le 15/01/2020 à 17:18, Arnd Bergmann a écrit :
>>>> On Wed, Jan 15, 2020 at 4:53 PM Filip Bozuta
>>>> <address@hidden> wrote:
>>>>> This patch implements functionality of following ioctl:
>>>>>
>>>>> SNDRV_TIMER_IOCTL_TREAD - Setting enhanced time read
>>>>>
>>>>>      Sets enhanced time read which is used for reading time with
>>>>> timestamps
>>>>>      and events. The third ioctl's argument is a pointer to an
>>>>> 'int'. Enhanced
>>>>>      reading is set if the third argument is different than 0,
>>>>> otherwise normal
>>>>>      time reading is set.
>>>>>
>>>>> Implementation notes:
>>>>>
>>>>>      Because the implemented ioctl has 'int' as its third argument,
>>>>> the
>>>>>      implementation was straightforward.
>>>>>
>>>>> Signed-off-by: Filip Bozuta <address@hidden>
>>>> I think this one is wrong when you go between 32-bit and 64-bit
>>> kernel uses an "int" and "int" is always 32bit.
>>> The problem is most likely with timespec I think.
>>>
>>>> targets, and it gets worse with the kernel patches that just got
>>>> merged for linux-5.5, which extends the behavior to deal with
>>>> 64-bit time_t on 32-bit architectures.
>>>>
>>>> Please have a look at
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/log/?h=80fe7430c70859
>>>>
>>> Yes, we already had the same kind of problem with SIOCGSTAMP and
>>> SIOCGSTAMPNS.
>>>
>>> Do the kernel patches add new ioctl numbers to differentiate 32bit and
>>> 64bit time_t?
>> Yes, though SNDRV_TIMER_IOCTL_TREAD is worse: the ioctl argument
>> is a pure 'int' that decides what format you get when you 'read' from the
>> same file descriptor.
>>
>> For emulating 64-bit on 32-bit kernels, you have to use the new
>> SNDRV_TIMER_IOCTL_TREAD64, and for emulating 32-bit on
>> 64-bit kernels, you probably have to return -ENOTTY to
>> SNDRV_TIMER_IOCTL_TREAD_OLD unless you also want to
>> emulate the read() behavior.
>> When a 32-bit process calls SNDRV_TIMER_IOCTL_TREAD64,
>> you can translate that into the 64-bit
>> SNDRV_TIMER_IOCTL_TREAD_OLD.
>>
>>       Arnd
> 
> 
> Thank you for bringing this up to my attention. Unfortunately i have
> some duties of academic nature in next month so i won't have much time
> fix this bug. I will try to fix this as soon as possible.

Could you at least to try to have a mergeable series before you have to
stop to work on this?

You can only manage the case before the change reported by Arnd (I will
manage the new case myself later).

Thanks,
Laurent




reply via email to

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