Thread (16 messages) 16 messages, 3 authors, 2015-12-03

Re: [Y2038] [PATCH 0/3] introduce new evdev interface type

From: Arnd Bergmann <hidden>
Date: 2015-12-03 12:56:38
Also in: linux-input, lkml

On Thursday 03 December 2015 13:54:47 Arnd Bergmann wrote:
quoted
quoted
struct input_event {
#if !defined(__KERNEL__) && __TIME_T_BITS == __BITS_PER_LONG
       struct timeval time;
quoted
#else
    struct {
            union {
                    __u32 tv_sec __attribute__((deprecated));
                    __u32 tv_sec_monotonic;
            };
            __s32 tv_usec;
    } time;
#endif
       __u16 type;
       __u16 code;
       __s32 value;
};
I have one question here, if userspace use this structure, all helper functions
of timeval will not work. And userspace need to write extra helper function for
this fake timeval. This just create an another urgly time structure.
Correct, this is a useful side-effect of the change: any user space access to
the event->time member that assumes it's a timeval will cause a compile-time
warning or error (depending on the access), which helps us identify the
broken code and fix it to use monotonic times as well as access the right
struct members.
To clarify, the code also intentionally only changes the types when
we are compiling with a new 32-bit libc: everything that builds today
will continue to build and work without warnings, unless it gets
recompiled with 64-bit time_t and needs to be fixed.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help