Le 11/07/2019 à 23:05, Arnd Bergmann a écrit : > On Thu, Jul 11, 2019 at 7:32 PM Laurent Vivier <laur...@vivier.eu> wrote: > >> >> Notes: >> v4: [lv] timeval64 and timespec64 are { long long , long } > >> >> +STRUCT(timeval64, TYPE_LONGLONG, TYPE_LONG) >> + >> +STRUCT(timespec64, TYPE_LONGLONG, TYPE_LONG) >> + > > This still doesn't look right, see my earlier comment about padding > on big-endian architectures. > > Note that the in-kernel 'timespec64' is different from the uapi > '__kernel_timespec' exported by the kernel. I also still think you may > need to convert between SIOCGSTAMP_NEW and SIOCGSTAMP_OLD, > e.g. when emulating a 32-bit riscv process (which only use > SIOCGSTAMP_NEW) on a kernel that only understands > SIOCGSTAMP_OLD.
I agree. I'm preparing a patch always using SIOCGSTAMP and SIOCGSTAMPNS on the host (converting the structure when needed). I've added the SH4 variant. I've added the sparc64 variant too: does it means sparc64 use the same structure internally for the OLD and NEW version? What about sparc 32bit? For big-endian, I didn't find in the kernel where the difference is managed: a byte swapping of the 64bit value is not enough? Thanks, Laurent