Module Name:    src
Committed By:   riastradh
Date:           Thu Dec 19 23:50:23 UTC 2024

Modified Files:
        src/sys/kern: sys_timerfd.c
        src/tests/lib/libc/sys: t_timerfd.c

Log Message:
timerfd_settime(2): Return relative duration remaining.

Not absolute time of next event.

PR kern/58917: timer_settime and timerfd_settime return absolute time
of next event


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/kern/sys_timerfd.c
cvs rdiff -u -r1.10 -r1.11 src/tests/lib/libc/sys/t_timerfd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/sys_timerfd.c
diff -u src/sys/kern/sys_timerfd.c:1.10 src/sys/kern/sys_timerfd.c:1.11
--- src/sys/kern/sys_timerfd.c:1.10	Thu Dec 19 23:45:39 2024
+++ src/sys/kern/sys_timerfd.c	Thu Dec 19 23:50:22 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_timerfd.c,v 1.10 2024/12/19 23:45:39 riastradh Exp $	*/
+/*	$NetBSD: sys_timerfd.c,v 1.11 2024/12/19 23:50:22 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_timerfd.c,v 1.10 2024/12/19 23:45:39 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_timerfd.c,v 1.11 2024/12/19 23:50:22 riastradh Exp $");
 
 /*
  * timerfd
@@ -621,7 +621,7 @@ do_timerfd_settime(struct lwp *l, int fd
 
  restart:
 	if (old_value != NULL) {
-		*old_value = it->it_time;
+		itimer_gettime(it, old_value);
 	}
 	it->it_time = value;
 

Index: src/tests/lib/libc/sys/t_timerfd.c
diff -u src/tests/lib/libc/sys/t_timerfd.c:1.10 src/tests/lib/libc/sys/t_timerfd.c:1.11
--- src/tests/lib/libc/sys/t_timerfd.c:1.10	Thu Dec 19 23:45:39 2024
+++ src/tests/lib/libc/sys/t_timerfd.c	Thu Dec 19 23:50:22 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_timerfd.c,v 1.10 2024/12/19 23:45:39 riastradh Exp $ */
+/* $NetBSD: t_timerfd.c,v 1.11 2024/12/19 23:50:22 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2020\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_timerfd.c,v 1.10 2024/12/19 23:45:39 riastradh Exp $");
+__RCSID("$NetBSD: t_timerfd.c,v 1.11 2024/12/19 23:50:22 riastradh Exp $");
 
 #include <sys/types.h>
 
@@ -307,15 +307,11 @@ ATF_TC_BODY(timerfd_block, tc)
 	ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &then) == 0);
 	ATF_REQUIRE(timerfd_settime(fd, 0, &its, NULL) == 0);
 	ATF_REQUIRE(timerfd_settime(fd, 0, &its, &oits) == 0);
-	atf_tc_expect_fail("PR kern/58917:"
-	    " timer_settime and timerfd_settime return absolute time"
-	    " of next event");
 	ATF_CHECK_MSG(timespeccmp(&oits.it_value, &its.it_value, <=),
 	    "timerfd_settime returned %jd.%09lu remaining,"
 	    " expected at most %jd.%09lu",
 	    (intmax_t)oits.it_value.tv_sec, oits.it_value.tv_nsec,
 	    (intmax_t)its.it_value.tv_sec, its.it_value.tv_nsec);
-	atf_tc_expect_pass();
 	ATF_REQUIRE(timerfd_read(fd, &val) == 0);
 	ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &now) == 0);
 	ATF_REQUIRE(check_value_against_bounds(val, 1, 1));
@@ -396,15 +392,11 @@ ATF_TC_BODY(timerfd_abstime, tc)
 	ATF_REQUIRE(timerfd_settime(fd, TFD_TIMER_ABSTIME, &its, &oits) == 0);
 	timespecadd(&delta, (&(const struct timespec){2, 0}), /* tick slop */
 	    &delta);
-	atf_tc_expect_fail("PR kern/58917:"
-	    " timer_settime and timerfd_settime return absolute time"
-	    " of next event");
 	ATF_CHECK_MSG(timespeccmp(&oits.it_value, &delta, <=),
 	    "timerfd_settime returned %jd.%09lu remaining,"
 	    " expected at most %jd.%09lu",
 	    (intmax_t)oits.it_value.tv_sec, oits.it_value.tv_nsec,
 	    (intmax_t)delta.tv_sec, delta.tv_nsec);
-	atf_tc_expect_pass();
 	ATF_REQUIRE(timerfd_read(fd, &val) == 0);
 	ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &now) == 0);
 	ATF_REQUIRE(check_value_against_bounds(val, 1, 1));

Reply via email to