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

Message ID 470d2036c006c525b5dd78b4c7fb860ee521aafd.1565398514.git.alistair.francis@wdc.com
State New
Headers show
Series
  • RISC-V glibc port for the 32-bit
Related show

Commit Message

Alistair Francis Aug. 10, 2019, 1 a.m.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

---
 sysdeps/unix/sysv/linux/syscalls.list | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

-- 
2.22.0

Comments

Alistair Francis Aug. 14, 2019, 6:35 p.m. | #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. | #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. | #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. | #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