Module Name: src Committed By: bouyer Date: Sun Nov 26 12:33:19 UTC 2023
Modified Files: src/sys/kern [netbsd-10]: sys_eventfd.c Log Message: Pull up following revision(s) (requested by riastradh in ticket #468): sys/kern/sys_eventfd.c: revision 1.10 eventfd(2): Omit needless micro-optimization causing PR kern/57703. Unfortunately, owing to PR kern/57705 and PR misc/57706, it isn't convenient to flip the xfail switch on a test for this bug. So we'll do that separately. (But I did verify that a rumpified version of the test postd to PR kern/57703 failed without this change, and passed with this change.) PR kern/57703 XXX pullup-10 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/kern/sys_eventfd.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_eventfd.c diff -u src/sys/kern/sys_eventfd.c:1.9 src/sys/kern/sys_eventfd.c:1.9.4.1 --- src/sys/kern/sys_eventfd.c:1.9 Thu Feb 17 16:28:29 2022 +++ src/sys/kern/sys_eventfd.c Sun Nov 26 12:33:19 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_eventfd.c,v 1.9 2022/02/17 16:28:29 thorpej Exp $ */ +/* $NetBSD: sys_eventfd.c,v 1.9.4.1 2023/11/26 12:33:19 bouyer Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_eventfd.c,v 1.9 2022/02/17 16:28:29 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_eventfd.c,v 1.9.4.1 2023/11/26 12:33:19 bouyer Exp $"); /* * eventfd @@ -69,8 +69,6 @@ struct eventfd { eventfd_t efd_val; int64_t efd_nwaiters; bool efd_restarting; - bool efd_has_read_waiters; - bool efd_has_write_waiters; bool efd_is_semaphore; /* @@ -117,8 +115,6 @@ eventfd_destroy(struct eventfd * const e { KASSERT(efd->efd_nwaiters == 0); - KASSERT(efd->efd_has_read_waiters == false); - KASSERT(efd->efd_has_write_waiters == false); cv_destroy(&efd->efd_read_wait); cv_destroy(&efd->efd_write_wait); @@ -155,10 +151,8 @@ eventfd_wait(struct eventfd * const efd, } if (is_write) { - efd->efd_has_write_waiters = true; waitcv = &efd->efd_write_wait; } else { - efd->efd_has_read_waiters = true; waitcv = &efd->efd_read_wait; } @@ -194,17 +188,11 @@ eventfd_wake(struct eventfd * const efd, int pollev; if (is_write) { - if (efd->efd_has_read_waiters) { - waitcv = &efd->efd_read_wait; - efd->efd_has_read_waiters = false; - } + waitcv = &efd->efd_read_wait; sel = &efd->efd_read_sel; pollev = POLLIN | POLLRDNORM; } else { - if (efd->efd_has_write_waiters) { - waitcv = &efd->efd_write_wait; - efd->efd_has_write_waiters = false; - } + waitcv = &efd->efd_write_wait; sel = &efd->efd_write_sel; pollev = POLLOUT | POLLWRNORM; } @@ -537,14 +525,8 @@ eventfd_fop_restart(file_t * const fp) if (efd->efd_nwaiters != 0) { efd->efd_restarting = true; - if (efd->efd_has_read_waiters) { - cv_broadcast(&efd->efd_read_wait); - efd->efd_has_read_waiters = false; - } - if (efd->efd_has_write_waiters) { - cv_broadcast(&efd->efd_write_wait); - efd->efd_has_write_waiters = false; - } + cv_broadcast(&efd->efd_read_wait); + cv_broadcast(&efd->efd_write_wait); } mutex_exit(&efd->efd_lock);