diff options
author | Lukasz Majewski <lukma@denx.de> | 2019-11-05 12:18:24 +0100 |
---|---|---|
committer | Lukasz Majewski <lukma@denx.de> | 2019-12-05 23:16:54 +0100 |
commit | 115959290f01f6c0674e16e0de5d8a16f79d19de (patch) | |
tree | 4e102754b3544ce1c6f046a9efa1c6b9010c5455 /sysdeps | |
parent | 4b135425d889cb18b0fb3c3d166e115927042dda (diff) | |
download | glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.tar glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.tar.gz glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.tar.bz2 glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.zip |
timer: Decouple x86_64 specific timer_gettime from generic Linux implementation
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.
The original INLINE_SYSCALL() macro has been replaced with
INLINE_SYSCALL_CALL() to avoid explicit passing the number of arguments.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/timer_gettime.c | 7 | ||||
-rw-r--r-- | 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..0122deec14 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_CALL (timer_gettime, kt->ktimerid, value); +} versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3); |