All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH V7 14/19] syscalls/select6: Add support for time64 tests
Date: Tue, 28 Jul 2020 10:02:18 +0200	[thread overview]
Message-ID: <CAK8P3a24BOOnKoiEQbbihp_m34NZXfQgb=Xcrg+TmLHTLO9Cbg@mail.gmail.com> (raw)
In-Reply-To: <20200728072357.22lyy2b4auyqqmvs@vireshk-mac-ubuntu>

On Tue, Jul 28, 2020 at 9:24 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 27-07-20, 11:40, Cyril Hrubis wrote:
> > > @@ -38,7 +39,7 @@ static int do_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *except
> > >     }
> > >     case 2: {
> > >             int ret;
> > > -           struct timespec ts = {
> > > +           struct __kernel_old_timespec ts = {
> > >                     .tv_sec = timeout->tv_sec,
> > >                     .tv_nsec = timeout->tv_usec * 1000,
> > >             };
> >
> > I'm a bit lost here, should we actually pass the __kernel_old_timespec
> > to all the tst_syscall() fuctions here?
>
> select, pselect6, pselect6_time64, and newselect, all have different
> requirements, some take timespec and others take timeval.
>
> Though after looking again at kernel sources I feel pselect6 may need
> __kernel_timespec instead of __kernel_old_timespec, which is different than what
> we did with other syscalls.
>
> Arnd, can you confirm this please ?

On the kernel side, there is '__NR_pselect6', which refers to the syscall
that takes a 'struct __kernel_old_timespec'., while 32-bit architectures
have another syscall with the number __NR_pselect6_time64 that
takes a 'struct __kernel_timespec'.

The kernel implementation internally uses sys_pselect6_time32()
for the entry point that takes a 32-bit time_t (__NR_pselect6 on
32-bit architectures), and sys_pselect6() for the entry point
that passes a 64-bit time_t (__NR_pselect6 on 64-bit architectures
or __NR_pselect6_time64 on 32-bit architectures).

> > I guess that the only function that would take the argument as struct
> > timeval is the select() glibc function, or do I miss something?
>
> select in kernel also takes old timeval.

Correct, though most modern architectures do not implement this
and only provide pselect6 (and pselect6_time64).

> > > @@ -72,11 +88,14 @@ static void select_info(void)
> > >             tst_res(TINFO, "Testing SYS_pselect6 syscall");
> > >     break;
> > >     case 3:
> > > +           tst_res(TINFO, "Testing SYS_pselect6 time64 syscall");
> > > +   break;
> > > +   case 4:
> > >             tst_res(TINFO, "Testing SYS__newselect syscall");
> > >     break;
> > >     }
> > >  }
> > >
> > > -#define TEST_VARIANTS 4
> > > +#define TEST_VARIANTS 5
> >
> > Also lastly but not least we should clean up the rest of the select
> > tests and add support for the different variants there as well.
>
> Maybe not. IIUC only pselect6 got changed to adapt to different timespec
> structures and the other ones aren't.
>
> Arnd: Can you confirm this as well ?

Yes, this is correct. __NR__newselect (sys_select) and __NR_select
(sys_old_select or sys_select) are both considered obsolete and only
provided on older architectures for backwards compatibility with old libc
versions.

       Arnd

  reply	other threads:[~2020-07-28  8:02 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-26  6:22 [LTP] [PATCH V7 00/19] Syscalls: Add support for time64 variants Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 01/19] tst_timer: Add new definitions Viresh Kumar
2020-06-26  9:49   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 02/19] syscalls/timer_gettime: Add support for time64 tests Viresh Kumar
2020-06-26  9:49   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 03/19] syscalls/timer_settime: " Viresh Kumar
2020-06-29  9:39   ` Cyril Hrubis
2020-06-29 11:43     ` Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 04/19] syscalls/timerfd: " Viresh Kumar
2020-07-02 12:24   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 05/19] syscalls/sched_rr_get_interval: " Viresh Kumar
2020-07-02 13:06   ` Cyril Hrubis
2020-07-03  3:15     ` Viresh Kumar
2020-07-03  5:52       ` Yang Xu
2020-07-03  7:26         ` Viresh Kumar
2020-07-03  7:38   ` [LTP] [PATCH] syscalls/sched_rr_get_interval: Validate the timeslice Viresh Kumar
2020-07-03  7:43     ` Yang Xu
2020-07-03  7:51       ` Viresh Kumar
2020-07-03  8:00         ` Yang Xu
2020-07-03  8:18           ` Viresh Kumar
2020-07-03  9:01             ` Yang Xu
2020-07-03 14:08     ` Cyril Hrubis
2020-07-06  3:31     ` [LTP] [PATCH V2] " Viresh Kumar
2020-07-06  4:41       ` Yang Xu
2020-07-07  9:30       ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 06/19] syscalls/futex: Merge futex_wait_bitset tests Viresh Kumar
2020-07-03  9:15   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 07/19] syscalls/futex: Add support for time64 tests Viresh Kumar
2020-07-03 12:45   ` Cyril Hrubis
2020-07-06 10:40     ` Viresh Kumar
2020-07-06 11:36       ` Viresh Kumar
2020-07-06 11:40   ` [LTP] [PATCH V7.1 " Viresh Kumar
2020-07-23 19:44     ` Cyril Hrubis
2020-07-24  2:33       ` Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 08/19] syscalls/io_pgetevents: " Viresh Kumar
2020-07-03 14:59   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 09/19] syscalls/sigwaitinfo: Migrate to new test framework Viresh Kumar
2020-07-03 13:58   ` Cyril Hrubis
2020-07-06  2:39     ` Viresh Kumar
2020-07-07 15:16       ` Cyril Hrubis
2020-07-09 10:46         ` Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 10/19] syscalls/rt_sigtimedwait: Add support for time64 tests Viresh Kumar
2020-07-22 10:03   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 11/19] syscalls/mq_timed{send|receive}: " Viresh Kumar
2020-07-24 14:51   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 12/19] syscalls/recvmmsg: " Viresh Kumar
2020-07-24 15:13   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 13/19] syscalls/ppoll: " Viresh Kumar
2020-07-27  9:17   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 14/19] syscalls/select6: " Viresh Kumar
2020-07-27  9:40   ` Cyril Hrubis
2020-07-28  7:23     ` Viresh Kumar
2020-07-28  8:02       ` Arnd Bergmann [this message]
2020-06-26  6:22 ` [LTP] [PATCH V7 15/19] syscalls/semop: Migrate to new test framework Viresh Kumar
2020-07-27 13:46   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 16/19] syscalls/semtimedop: Add support for semtimedop and its time64 version Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 17/19] syscalls/utimensat: Migrate to new test framework Viresh Kumar
2020-07-27 15:35   ` Cyril Hrubis
2020-06-26  6:22 ` [LTP] [PATCH V7 18/19] syscalls/utimensat: Add support for time64 tests Viresh Kumar
2020-06-26  6:22 ` [LTP] [PATCH V7 19/19] syscalls: clock_settime: Add test around y2038 vulnerability Viresh Kumar
2020-07-28 12:11   ` Cyril Hrubis
2020-08-04 12:37     ` Viresh Kumar
2020-07-20 10:19 ` [LTP] [PATCH V7 00/19] Syscalls: Add support for time64 variants Viresh Kumar
2020-07-22 10:04   ` Cyril Hrubis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK8P3a24BOOnKoiEQbbihp_m34NZXfQgb=Xcrg+TmLHTLO9Cbg@mail.gmail.com' \
    --to=arnd@arndb.de \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.