aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Majewski <lukma@denx.de>2019-11-05 12:18:24 +0100
committerLukasz Majewski <lukma@denx.de>2019-12-05 23:16:54 +0100
commit115959290f01f6c0674e16e0de5d8a16f79d19de (patch)
tree4e102754b3544ce1c6f046a9efa1c6b9010c5455
parent4b135425d889cb18b0fb3c3d166e115927042dda (diff)
downloadglibc-115959290f01f6c0674e16e0de5d8a16f79d19de.zip
glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.tar.gz
glibc-115959290f01f6c0674e16e0de5d8a16f79d19de.tar.bz2
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>
-rw-r--r--sysdeps/unix/sysv/linux/timer_gettime.c7
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/timer_gettime.c12
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 799e2c9..8d9bef9 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 54daee2..0122dee 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);