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