On Thursday 03 December 2015 13:54:47 Arnd Bergmann wrote: > > > struct input_event { > > > #if !defined(__KERNEL__) && __TIME_T_BITS == __BITS_PER_LONG > > > struct timeval time; > > > > > #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 -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html