|
|
Message-ID: <20201227184032.22413-18-alobakin@pm.me>
Date: Sun, 27 Dec 2020 18:42:55 +0000
From: Alexander Lobakin <alobakin@...me>
To: Rich Felker <dalias@...ifal.cx>, musl@...ts.openwall.com
Cc: Alexander Lobakin <alobakin@...me>
Subject: [PATCH 18/18] sched_rr_get_interval: use time64 variant if available
Use the new time64 variant of sched_rr_get_interval as a default and
fallback to the old one only on -ENOSYS.
Signed-off-by: Alexander Lobakin <alobakin@...me>
---
src/sched/sched_rr_get_interval.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/sched/sched_rr_get_interval.c b/src/sched/sched_rr_get_interval.c
index 33a3d1aeed43..bdcba9c57248 100644
--- a/src/sched/sched_rr_get_interval.c
+++ b/src/sched/sched_rr_get_interval.c
@@ -4,18 +4,17 @@
int sched_rr_get_interval(pid_t pid, struct timespec *ts)
{
#ifdef SYS_sched_rr_get_interval_time64
- /* On a 32-bit arch, use the old syscall if it exists. */
- if (SYS_sched_rr_get_interval != SYS_sched_rr_get_interval_time64) {
- long ts32[2];
- int r = __syscall(SYS_sched_rr_get_interval, pid, ts32);
- if (!r) {
- ts->tv_sec = ts32[0];
- ts->tv_nsec = ts32[1];
- }
+ int r = __syscall(SYS_sched_rr_get_interval_time64, pid, ts);
+ if (SYS_sched_rr_get_interval == SYS_sched_rr_get_interval_time64 || r != -ENOSYS)
return __syscall_ret(r);
+ long ts32[2];
+ r = __syscall(SYS_sched_rr_get_interval, pid, ts32);
+ if (!r) {
+ ts->tv_sec = ts32[0];
+ ts->tv_nsec = ts32[1];
}
-#endif
- /* If reaching this point, it's a 64-bit arch or time64-only
- * 32-bit arch and we can get result directly into timespec. */
+ return __syscall_ret(r);
+#else
return syscall(SYS_sched_rr_get_interval, pid, ts);
+#endif
}
--
2.29.2
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.