Re: [PATCH v3 1/4] uinput: Add ioctl for using monotonic/ boot times

From: Deepa Dinamani
Date: Mon Dec 04 2017 - 15:36:45 EST


On Mon, Dec 4, 2017 at 6:21 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Mon, Dec 4, 2017 at 1:55 AM, Deepa Dinamani <deepa.kernel@xxxxxxxxx> wrote:
>> struct timeval which is part of struct input_event to
>> maintain the event times is not y2038 safe.
>>
>> Real time timestamps are also not ideal for input_event
>> as this time can go backwards as noted in the patch
>> a80b83b7b8 by John Stultz.
>>
>> Arnd Bergmann suggested deprecating real time and using
>> monotonic or other timers for all input_event times as a
>> solution to both the above problems.
>>
>> Add a new ioctl to let the user dictate the kind of time
>> to be used for input events. This is similar to the evdev
>> implementation of the feature. Realtime is still the
>> default time. This is to maintain backward compatibility.
>>
>> The structure to maintain input events will be changed
>> in a different patch.
>
> Based on Peter's comment from when you first posted this,
> https://patchwork.kernel.org/patch/9381209/, I tried to follow
> the code path again, to see if we can come up with a way
> to avoid introducing a new ioctl.
>
> There is one idea I had now: The two events we
> get (upload and erase) are both triggered from evdev,
> which gets called from user space through the EVIOCSFF
> and EVIOCRMFF ioctls. This device already sets the
> clock domain. Would it make sense to send the event
> to the uinput owner using the same clock domain that
> was set by the evdev owner, or are these two separate
> by definition?

uinput and evdev are two separate drivers. One is to write events to a
virtual device and the other is to read from any input device.
I considered both of these separate as the two events.
Let me know if you guys prefer something else.

We could also do away with this patch and just say we extend time till
2106 as we change struct input_event if we are okay with using
realtime only for uinput.

-Deepa