[PATCH v4 3/8] timespec32: Rename to old_timespec32
Dmitry V. Levin
ldv at altlinux.org
Tue Mar 10 18:52:55 UTC 2020
On Tue, Mar 10, 2020 at 11:32:24AM -0700, Alistair Francis wrote:
> On Tue, Mar 10, 2020 at 11:34 AM Dmitry V. Levin <ldv at altlinux.org> wrote:
> >
> > On Tue, Mar 10, 2020 at 11:04:54AM -0700, Alistair Francis wrote:
> > > On Mon, Mar 9, 2020 at 6:44 PM Dmitry V. Levin <ldv at altlinux.org> wrote:
> > > > On Mon, Mar 09, 2020 at 05:42:59PM -0700, Alistair Francis wrote:
> > > > > The Linux kernel calls the 32-bit timespec struct old_timespec32, so
> > > > > let's rename it to be clear.
> > > >
> > > > I don't find old_timespec32 any more clear than timespec32, sorry.
> > > > Why add a prefix when the suffix is quite descriptive already?
> > >
> > > The main reason is just to be explicitly clear.
> > >
> > > There are three timespecs in the Linux kernel:
> > > - timespec64 - include/linux/time64.h
> > > - This one gives a 64-bit version for all systems
> > > - old_timespec32 - include/linux/time64.h
> > > - This is only used on old 32-bit systems (with *_time32 syscalls)
> > > - timespec - include/uapi/linux/time.h
> > > - This is used for some syscalls (as seen in this series).
> > > - On 32-bit systems this is a 32-bit value (no matter what size
> > > time_t is) so it can be confused with the current strace timespec32
> > > (although it's not the same).
> >
> > Sorry, I don't follow. Isn't it either kernel_timespec64_t or
> > kernel_timespec32_t in every case? Could you give an example where
> > it doesn't match neither kernel_timespec64_t nor kernel_timespec32_t?
>
> The timespec here is the same as the struct __kernel_old_timespec.
>
> For 32-bit systems __kernel_old_timespec and kernel_timespec32_t will
> end up being the same, but the definitions are different.
>
> struct timespec {
> __kernel_old_time_t tv_sec; /* seconds */
> long tv_nsec; /* nanoseconds */
> };
>
> AND
>
> typedef s32 old_time32_t;
>
> struct old_timespec32 {
> old_time32_t tv_sec;
> s32 tv_nsec;
> };
So there is no difference from strace decoders perspective which already
do the right thing by invoking proper functions.
I really don't see where this third structure might be used in strace itself.
I suggest creating kernel_timespec_t and kernel_old_timespec_t
so they could be used in tests like tests/sockopt-timestamp.c.
--
ldv
More information about the Strace-devel
mailing list