git: af9521f635ef - stable/13 - vdso gettimeofday: minor restructuring

Konstantin Belousov kib at FreeBSD.org
Wed Jun 30 05:08:12 UTC 2021


The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=af9521f635ef8f7223ddb68b33928d4320dc2357

commit af9521f635ef8f7223ddb68b33928d4320dc2357
Author:     Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-06-22 23:58:32 +0000
Commit:     Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-06-30 04:41:58 +0000

    vdso gettimeofday: minor restructuring
    
    (cherry picked from commit e912fbe1675714aab0179999923c171615e78c07)
---
 lib/libc/sys/__vdso_gettimeofday.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/lib/libc/sys/__vdso_gettimeofday.c b/lib/libc/sys/__vdso_gettimeofday.c
index 32c416a54392..4c1f4bda23e1 100644
--- a/lib/libc/sys/__vdso_gettimeofday.c
+++ b/lib/libc/sys/__vdso_gettimeofday.c
@@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/time.h>
 #include <sys/vdso.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <strings.h>
 #include <time.h>
 #include <machine/atomic.h>
@@ -59,7 +60,7 @@ tc_delta(const struct vdso_timehands *th, u_int *delta)
  * is based on the kernel implementation.
  */
 static int
-binuptime(struct bintime *bt, struct vdso_timekeep *tk, int abs)
+binuptime(struct bintime *bt, struct vdso_timekeep *tk, bool abs)
 {
 	struct vdso_timehands *th;
 	uint32_t curr, gen;
@@ -123,7 +124,7 @@ __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
 	}
 	if (tk->tk_ver != VDSO_TK_VER_CURR)
 		return (ENOSYS);
-	error = binuptime(&bt, tk, 1);
+	error = binuptime(&bt, tk, true);
 	if (error != 0)
 		return (error);
 	bintime2timeval(&bt, tv);
@@ -135,7 +136,7 @@ int
 __vdso_clock_gettime(clockid_t clock_id, struct timespec *ts)
 {
 	struct bintime bt;
-	int abs, error;
+	int error;
 
 	if (tk == NULL) {
 		error = _elf_aux_info(AT_TIMEKEEP, &tk, sizeof(tk));
@@ -149,7 +150,7 @@ __vdso_clock_gettime(clockid_t clock_id, struct timespec *ts)
 	case CLOCK_REALTIME_PRECISE:
 	case CLOCK_REALTIME_FAST:
 	case CLOCK_SECOND:
-		abs = 1;
+		error = binuptime(&bt, tk, true);
 		break;
 	case CLOCK_MONOTONIC:
 	case CLOCK_MONOTONIC_PRECISE:
@@ -157,12 +158,12 @@ __vdso_clock_gettime(clockid_t clock_id, struct timespec *ts)
 	case CLOCK_UPTIME:
 	case CLOCK_UPTIME_PRECISE:
 	case CLOCK_UPTIME_FAST:
-		abs = 0;
+		error = getnanouptime(&bt, tk);
 		break;
 	default:
-		return (ENOSYS);
+		error = ENOSYS;
+		break;
 	}
-	error = binuptime(&bt, tk, abs);
 	if (error != 0)
 		return (error);
 	bintime2timespec(&bt, ts);


More information about the dev-commits-src-branches mailing list