[RFC,v4,23/24] WIP: syscall.list: Call 64-bit versions of syscalls

Message ID 470d2036c006c525b5dd78b4c7fb860ee521aafd.1565398514.git.alistair.francis@wdc.com
State New, archived
Headers

Commit Message

Alistair Francis Aug. 10, 2019, 1 a.m. UTC
  Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
 sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Alistair Francis Aug. 14, 2019, 6:35 p.m. UTC | #1
On Fri, Aug 9, 2019 at 6:04 PM Alistair Francis
<alistair.francis@wdc.com> wrote:
>
> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> ---
>  sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
> index e374f97b5f8..4844d1a9a3b 100644
> --- a/sysdeps/unix/sysv/linux/syscalls.list
> +++ b/sysdeps/unix/sysv/linux/syscalls.list
> @@ -5,7 +5,7 @@ alarm           -       alarm           i:i     alarm
>  bdflush                EXTRA   bdflush         i:ii    __compat_bdflush        bdflush@GLIBC_2.0:GLIBC_2.23
>  capget         EXTRA   capget          i:pp    capget
>  capset         EXTRA   capset          i:pp    capset
> -clock_adjtime  EXTRA   clock_adjtime   i:ip    clock_adjtime
> +clock_adjtime  EXTRA   clock_adjtime64 i:ip    clock_adjtime
>  create_module  EXTRA   create_module   3       __compat_create_module  create_module@GLIBC_2.0:GLIBC_2.23
>  delete_module  EXTRA   delete_module   3       delete_module
>  epoll_create   EXTRA   epoll_create    i:i     epoll_create
> @@ -52,7 +52,7 @@ sched_getp    -       sched_getparam  i:ip    __sched_getparam        sched_getparam
>  sched_gets     -       sched_getscheduler      i:i     __sched_getscheduler    sched_getscheduler
>  sched_primax   -       sched_get_priority_max  i:i     __sched_get_priority_max        sched_get_priority_max
>  sched_primin   -       sched_get_priority_min  i:i     __sched_get_priority_min        sched_get_priority_min
> -sched_rr_gi    -       sched_rr_get_interval   i:ip    __sched_rr_get_interval sched_rr_get_interval
> +sched_rr_gi    -       sched_rr_get_interval_time64    i:ip    __sched_rr_get_interval sched_rr_get_interval
>  sched_setp     -       sched_setparam  i:ip    __sched_setparam        sched_setparam
>  sched_sets     -       sched_setscheduler      i:iip   __sched_setscheduler    sched_setscheduler
>  sched_yield    -       sched_yield     i:      __sched_yield   sched_yield
> @@ -96,8 +96,8 @@ fremovexattr  -       fremovexattr    i:is    fremovexattr
>  mq_setattr     -       mq_getsetattr   i:ipp   mq_setattr
>
>  timerfd_create EXTRA   timerfd_create  i:ii    timerfd_create
> -timerfd_settime        EXTRA   timerfd_settime i:iipp  timerfd_settime
> -timerfd_gettime        EXTRA   timerfd_gettime i:ip    timerfd_gettime
> +timerfd_settime        EXTRA   timerfd_settime64       i:iipp  timerfd_settime
> +timerfd_gettime        EXTRA   timerfd_gettime64       i:ip    timerfd_gettime

Does anyone have ideas/opinions on how to handle this correctly?

Alistair

>
>  fanotify_init  EXTRA   fanotify_init   i:ii    fanotify_init
>
> --
> 2.22.0
>
  
Florian Weimer Aug. 14, 2019, 6:57 p.m. UTC | #2
* Alistair Francis:

> On Fri, Aug 9, 2019 at 6:04 PM Alistair Francis
> <alistair.francis@wdc.com> wrote:
>>
>> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
>> ---
>>  sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
>> index e374f97b5f8..4844d1a9a3b 100644
>> --- a/sysdeps/unix/sysv/linux/syscalls.list
>> +++ b/sysdeps/unix/sysv/linux/syscalls.list
>> @@ -5,7 +5,7 @@ alarm           -       alarm           i:i     alarm
>>  bdflush                EXTRA   bdflush         i:ii    __compat_bdflush        bdflush@GLIBC_2.0:GLIBC_2.23
>>  capget         EXTRA   capget          i:pp    capget
>>  capset         EXTRA   capset          i:pp    capset
>> -clock_adjtime  EXTRA   clock_adjtime   i:ip    clock_adjtime
>> +clock_adjtime  EXTRA   clock_adjtime64 i:ip    clock_adjtime
>>  create_module  EXTRA   create_module   3       __compat_create_module  create_module@GLIBC_2.0:GLIBC_2.23
>>  delete_module  EXTRA   delete_module   3       delete_module
>>  epoll_create   EXTRA   epoll_create    i:i     epoll_create
>> @@ -52,7 +52,7 @@ sched_getp    -       sched_getparam  i:ip    __sched_getparam        sched_getparam
>>  sched_gets     -       sched_getscheduler      i:i     __sched_getscheduler    sched_getscheduler
>>  sched_primax   -       sched_get_priority_max  i:i     __sched_get_priority_max        sched_get_priority_max
>>  sched_primin   -       sched_get_priority_min  i:i     __sched_get_priority_min        sched_get_priority_min
>> -sched_rr_gi    -       sched_rr_get_interval   i:ip    __sched_rr_get_interval sched_rr_get_interval
>> +sched_rr_gi    -       sched_rr_get_interval_time64    i:ip    __sched_rr_get_interval sched_rr_get_interval
>>  sched_setp     -       sched_setparam  i:ip    __sched_setparam        sched_setparam
>>  sched_sets     -       sched_setscheduler      i:iip   __sched_setscheduler    sched_setscheduler
>>  sched_yield    -       sched_yield     i:      __sched_yield   sched_yield
>> @@ -96,8 +96,8 @@ fremovexattr  -       fremovexattr    i:is    fremovexattr
>>  mq_setattr     -       mq_getsetattr   i:ipp   mq_setattr
>>
>>  timerfd_create EXTRA   timerfd_create  i:ii    timerfd_create
>> -timerfd_settime        EXTRA   timerfd_settime i:iipp  timerfd_settime
>> -timerfd_gettime        EXTRA   timerfd_gettime i:ip    timerfd_gettime
>> +timerfd_settime        EXTRA   timerfd_settime64       i:iipp  timerfd_settime
>> +timerfd_gettime        EXTRA   timerfd_gettime64       i:ip    timerfd_gettime
>
> Does anyone have ideas/opinions on how to handle this correctly?

As in many of the other cases, you can add this to <sysdep.h>:

#define __NR_timerfd_settime __NR_timerfd_settime64
#define __NR_timerfd_gettime __NR_timerfd_gettime64

Once a second such port arrives, we can factor out these common system
call renamings into a generic-64 subdirectory.

I still think it's just wrong that the kernel doesn't provide these
names as part of the UAPI headers.

Thanks,
Florian
  
Alistair Francis Aug. 15, 2019, 9:39 p.m. UTC | #3
On Wed, Aug 14, 2019 at 11:57 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * Alistair Francis:
>
> > On Fri, Aug 9, 2019 at 6:04 PM Alistair Francis
> > <alistair.francis@wdc.com> wrote:
> >>
> >> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> >> ---
> >>  sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
> >>  1 file changed, 4 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
> >> index e374f97b5f8..4844d1a9a3b 100644
> >> --- a/sysdeps/unix/sysv/linux/syscalls.list
> >> +++ b/sysdeps/unix/sysv/linux/syscalls.list
> >> @@ -5,7 +5,7 @@ alarm           -       alarm           i:i     alarm
> >>  bdflush                EXTRA   bdflush         i:ii    __compat_bdflush        bdflush@GLIBC_2.0:GLIBC_2.23
> >>  capget         EXTRA   capget          i:pp    capget
> >>  capset         EXTRA   capset          i:pp    capset
> >> -clock_adjtime  EXTRA   clock_adjtime   i:ip    clock_adjtime
> >> +clock_adjtime  EXTRA   clock_adjtime64 i:ip    clock_adjtime
> >>  create_module  EXTRA   create_module   3       __compat_create_module  create_module@GLIBC_2.0:GLIBC_2.23
> >>  delete_module  EXTRA   delete_module   3       delete_module
> >>  epoll_create   EXTRA   epoll_create    i:i     epoll_create
> >> @@ -52,7 +52,7 @@ sched_getp    -       sched_getparam  i:ip    __sched_getparam        sched_getparam
> >>  sched_gets     -       sched_getscheduler      i:i     __sched_getscheduler    sched_getscheduler
> >>  sched_primax   -       sched_get_priority_max  i:i     __sched_get_priority_max        sched_get_priority_max
> >>  sched_primin   -       sched_get_priority_min  i:i     __sched_get_priority_min        sched_get_priority_min
> >> -sched_rr_gi    -       sched_rr_get_interval   i:ip    __sched_rr_get_interval sched_rr_get_interval
> >> +sched_rr_gi    -       sched_rr_get_interval_time64    i:ip    __sched_rr_get_interval sched_rr_get_interval
> >>  sched_setp     -       sched_setparam  i:ip    __sched_setparam        sched_setparam
> >>  sched_sets     -       sched_setscheduler      i:iip   __sched_setscheduler    sched_setscheduler
> >>  sched_yield    -       sched_yield     i:      __sched_yield   sched_yield
> >> @@ -96,8 +96,8 @@ fremovexattr  -       fremovexattr    i:is    fremovexattr
> >>  mq_setattr     -       mq_getsetattr   i:ipp   mq_setattr
> >>
> >>  timerfd_create EXTRA   timerfd_create  i:ii    timerfd_create
> >> -timerfd_settime        EXTRA   timerfd_settime i:iipp  timerfd_settime
> >> -timerfd_gettime        EXTRA   timerfd_gettime i:ip    timerfd_gettime
> >> +timerfd_settime        EXTRA   timerfd_settime64       i:iipp  timerfd_settime
> >> +timerfd_gettime        EXTRA   timerfd_gettime64       i:ip    timerfd_gettime
> >
> > Does anyone have ideas/opinions on how to handle this correctly?
>
> As in many of the other cases, you can add this to <sysdep.h>:
>
> #define __NR_timerfd_settime __NR_timerfd_settime64
> #define __NR_timerfd_gettime __NR_timerfd_gettime64
>
> Once a second such port arrives, we can factor out these common system
> call renamings into a generic-64 subdirectory.

Great! That's a straightforward fix.

Alistair

>
> I still think it's just wrong that the kernel doesn't provide these
> names as part of the UAPI headers.
>
> Thanks,
> Florian
  
Florian Weimer Aug. 19, 2019, 11:30 a.m. UTC | #4
* Alistair Francis:

> On Wed, Aug 14, 2019 at 11:57 AM Florian Weimer <fweimer@redhat.com> wrote:
>>
>> * Alistair Francis:
>>
>> > On Fri, Aug 9, 2019 at 6:04 PM Alistair Francis
>> > <alistair.francis@wdc.com> wrote:
>> >>
>> >> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
>> >> ---
>> >>  sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
>> >>  1 file changed, 4 insertions(+), 4 deletions(-)
>> >>
>> >> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
>> >> index e374f97b5f8..4844d1a9a3b 100644
>> >> --- a/sysdeps/unix/sysv/linux/syscalls.list
>> >> +++ b/sysdeps/unix/sysv/linux/syscalls.list
>> >> @@ -5,7 +5,7 @@ alarm           -       alarm           i:i     alarm
>> >>  bdflush                EXTRA   bdflush         i:ii    __compat_bdflush        bdflush@GLIBC_2.0:GLIBC_2.23
>> >>  capget         EXTRA   capget          i:pp    capget
>> >>  capset         EXTRA   capset          i:pp    capset
>> >> -clock_adjtime  EXTRA   clock_adjtime   i:ip    clock_adjtime
>> >> +clock_adjtime  EXTRA   clock_adjtime64 i:ip    clock_adjtime
>> >>  create_module  EXTRA   create_module   3       __compat_create_module  create_module@GLIBC_2.0:GLIBC_2.23
>> >>  delete_module  EXTRA   delete_module   3       delete_module
>> >>  epoll_create   EXTRA   epoll_create    i:i     epoll_create
>> >> @@ -52,7 +52,7 @@ sched_getp    -       sched_getparam  i:ip    __sched_getparam        sched_getparam
>> >>  sched_gets     -       sched_getscheduler      i:i     __sched_getscheduler    sched_getscheduler
>> >>  sched_primax   -       sched_get_priority_max  i:i     __sched_get_priority_max        sched_get_priority_max
>> >>  sched_primin   -       sched_get_priority_min  i:i     __sched_get_priority_min        sched_get_priority_min
>> >> -sched_rr_gi    -       sched_rr_get_interval   i:ip    __sched_rr_get_interval sched_rr_get_interval
>> >> +sched_rr_gi    -       sched_rr_get_interval_time64    i:ip    __sched_rr_get_interval sched_rr_get_interval
>> >>  sched_setp     -       sched_setparam  i:ip    __sched_setparam        sched_setparam
>> >>  sched_sets     -       sched_setscheduler      i:iip   __sched_setscheduler    sched_setscheduler
>> >>  sched_yield    -       sched_yield     i:      __sched_yield   sched_yield
>> >> @@ -96,8 +96,8 @@ fremovexattr  -       fremovexattr    i:is    fremovexattr
>> >>  mq_setattr     -       mq_getsetattr   i:ipp   mq_setattr
>> >>
>> >>  timerfd_create EXTRA   timerfd_create  i:ii    timerfd_create
>> >> -timerfd_settime        EXTRA   timerfd_settime i:iipp  timerfd_settime
>> >> -timerfd_gettime        EXTRA   timerfd_gettime i:ip    timerfd_gettime
>> >> +timerfd_settime        EXTRA   timerfd_settime64       i:iipp  timerfd_settime
>> >> +timerfd_gettime        EXTRA   timerfd_gettime64       i:ip    timerfd_gettime
>> >
>> > Does anyone have ideas/opinions on how to handle this correctly?
>>
>> As in many of the other cases, you can add this to <sysdep.h>:
>>
>> #define __NR_timerfd_settime __NR_timerfd_settime64
>> #define __NR_timerfd_gettime __NR_timerfd_gettime64
>>
>> Once a second such port arrives, we can factor out these common system
>> call renamings into a generic-64 subdirectory.
>
> Great! That's a straightforward fix.

Note that getting this to work on legacy architectures (which have a
32-bit time_t) today obviously requires vastly different steps.

I do not know if completing this work is a requirement for acceptance of
the RV32 port (I don't think it should be, but others might disagree).

Thanks,
Florian
  

Patch

diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index e374f97b5f8..4844d1a9a3b 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -5,7 +5,7 @@  alarm		-	alarm		i:i	alarm
 bdflush		EXTRA	bdflush		i:ii	__compat_bdflush	bdflush@GLIBC_2.0:GLIBC_2.23
 capget		EXTRA	capget		i:pp	capget
 capset		EXTRA	capset		i:pp	capset
-clock_adjtime	EXTRA	clock_adjtime	i:ip	clock_adjtime
+clock_adjtime	EXTRA	clock_adjtime64	i:ip	clock_adjtime
 create_module	EXTRA	create_module	3	__compat_create_module	create_module@GLIBC_2.0:GLIBC_2.23
 delete_module	EXTRA	delete_module	3	delete_module
 epoll_create	EXTRA	epoll_create	i:i	epoll_create
@@ -52,7 +52,7 @@  sched_getp	-	sched_getparam	i:ip	__sched_getparam	sched_getparam
 sched_gets	-	sched_getscheduler	i:i	__sched_getscheduler	sched_getscheduler
 sched_primax	-	sched_get_priority_max	i:i	__sched_get_priority_max	sched_get_priority_max
 sched_primin	-	sched_get_priority_min	i:i	__sched_get_priority_min	sched_get_priority_min
-sched_rr_gi	-	sched_rr_get_interval	i:ip	__sched_rr_get_interval	sched_rr_get_interval
+sched_rr_gi	-	sched_rr_get_interval_time64	i:ip	__sched_rr_get_interval	sched_rr_get_interval
 sched_setp	-	sched_setparam	i:ip	__sched_setparam	sched_setparam
 sched_sets	-	sched_setscheduler	i:iip	__sched_setscheduler	sched_setscheduler
 sched_yield	-	sched_yield	i:	__sched_yield	sched_yield
@@ -96,8 +96,8 @@  fremovexattr	-	fremovexattr	i:is	fremovexattr
 mq_setattr	-	mq_getsetattr	i:ipp	mq_setattr
 
 timerfd_create	EXTRA	timerfd_create	i:ii	timerfd_create
-timerfd_settime	EXTRA	timerfd_settime	i:iipp	timerfd_settime
-timerfd_gettime	EXTRA	timerfd_gettime	i:ip	timerfd_gettime
+timerfd_settime	EXTRA	timerfd_settime64	i:iipp	timerfd_settime
+timerfd_gettime	EXTRA	timerfd_gettime64	i:ip	timerfd_gettime
 
 fanotify_init	EXTRA	fanotify_init	i:ii	fanotify_init