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));