Message ID | 20191111214758.3677-3-lukma@denx.de |
---|---|
State | New |
Headers | show |
Series | y2038: linux: timer_[sg]ettime conversion to 64 bit time | expand |
Dear All, > The x86_64 specific timer_gettime implementation (from > ./linux/x86_64/timer_gettime.c) reused the Linux generic one (from > ./linux/timer_gettime.c) to implement handling some compatible timers > (previously defined in librt, now in libc). > > As the generic implementation now is going to also support new > (available from Linux 5.1+) timer_gettime64 syscall, those two > implementations have been decoupled for easier conversion. > --- > sysdeps/unix/sysv/linux/timer_gettime.c | 7 ------- > sysdeps/unix/sysv/linux/x86_64/timer_gettime.c | 12 ++++++++---- > 2 files changed, 8 insertions(+), 11 deletions(-) > > diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c > b/sysdeps/unix/sysv/linux/timer_gettime.c index > 799e2c935e..8d9bef9196 100644 --- > a/sysdeps/unix/sysv/linux/timer_gettime.c +++ > b/sysdeps/unix/sysv/linux/timer_gettime.c @@ -22,16 +22,9 @@ > #include <sysdep.h> > #include "kernel-posix-timers.h" > > - > -#ifdef timer_gettime_alias > -# define timer_gettime timer_gettime_alias > -#endif > - > - > int > timer_gettime (timer_t timerid, struct itimerspec *value) > { > -#undef timer_gettime > struct timer *kt = (struct timer *) timerid; > > /* Delete the kernel timer object. */ > diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c > b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c index > 54daee2f4c..5755cc44fb 100644 --- > a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c +++ > b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c @@ -17,13 +17,17 @@ > not, see <https://www.gnu.org/licenses/>. */ > > #include <shlib-compat.h> > +#include <sysdep.h> > +#include "kernel-posix-timers.h" > #include "compat-timer.h" > > +int > +__timer_gettime_new (timer_t timerid, struct itimerspec *value) > +{ > + struct timer *kt = (struct timer *) timerid; > > -#define timer_gettime_alias __timer_gettime_new > -#include <sysdeps/unix/sysv/linux/timer_gettime.c> > - > -#undef timer_gettime > + return INLINE_SYSCALL (timer_gettime, 2, kt->ktimerid, value); > +} > versioned_symbol (librt, __timer_gettime_new, timer_gettime, > GLIBC_2_3_3); > Gentle ping. Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
On 11/11/2019 18:47, Lukasz Majewski wrote: > The x86_64 specific timer_gettime implementation (from > ./linux/x86_64/timer_gettime.c) reused the Linux generic one (from > ./linux/timer_gettime.c) to implement handling some compatible timers > (previously defined in librt, now in libc). > > As the generic implementation now is going to also support new (available > from Linux 5.1+) timer_gettime64 syscall, those two implementations have > been decoupled for easier conversion. LGTM with a nit below. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > sysdeps/unix/sysv/linux/timer_gettime.c | 7 ------- > sysdeps/unix/sysv/linux/x86_64/timer_gettime.c | 12 ++++++++---- > 2 files changed, 8 insertions(+), 11 deletions(-) > > diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c > index 799e2c935e..8d9bef9196 100644 > --- a/sysdeps/unix/sysv/linux/timer_gettime.c > +++ b/sysdeps/unix/sysv/linux/timer_gettime.c > @@ -22,16 +22,9 @@ > #include <sysdep.h> > #include "kernel-posix-timers.h" > > - > -#ifdef timer_gettime_alias > -# define timer_gettime timer_gettime_alias > -#endif > - > - > int > timer_gettime (timer_t timerid, struct itimerspec *value) > { > -#undef timer_gettime > struct timer *kt = (struct timer *) timerid; > > /* Delete the kernel timer object. */ Ok. > diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c > index 54daee2f4c..5755cc44fb 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c > +++ b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c > @@ -17,13 +17,17 @@ > not, see <https://www.gnu.org/licenses/>. */ > > #include <shlib-compat.h> > +#include <sysdep.h> > +#include "kernel-posix-timers.h" > #include "compat-timer.h" > > +int > +__timer_gettime_new (timer_t timerid, struct itimerspec *value) > +{ > + struct timer *kt = (struct timer *) timerid; > > -#define timer_gettime_alias __timer_gettime_new > -#include <sysdeps/unix/sysv/linux/timer_gettime.c> > - > -#undef timer_gettime > + return INLINE_SYSCALL (timer_gettime, 2, kt->ktimerid, value); Use INLINE_SYSCALL_CALL. > +} > versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3); > > >
diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c index 799e2c935e..8d9bef9196 100644 --- a/sysdeps/unix/sysv/linux/timer_gettime.c +++ b/sysdeps/unix/sysv/linux/timer_gettime.c @@ -22,16 +22,9 @@ #include <sysdep.h> #include "kernel-posix-timers.h" - -#ifdef timer_gettime_alias -# define timer_gettime timer_gettime_alias -#endif - - int timer_gettime (timer_t timerid, struct itimerspec *value) { -#undef timer_gettime struct timer *kt = (struct timer *) timerid; /* Delete the kernel timer object. */ diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c index 54daee2f4c..5755cc44fb 100644 --- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c +++ b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c @@ -17,13 +17,17 @@ not, see <https://www.gnu.org/licenses/>. */ #include <shlib-compat.h> +#include <sysdep.h> +#include "kernel-posix-timers.h" #include "compat-timer.h" +int +__timer_gettime_new (timer_t timerid, struct itimerspec *value) +{ + struct timer *kt = (struct timer *) timerid; -#define timer_gettime_alias __timer_gettime_new -#include <sysdeps/unix/sysv/linux/timer_gettime.c> - -#undef timer_gettime + return INLINE_SYSCALL (timer_gettime, 2, kt->ktimerid, value); +} versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3);