Module Name: src
Committed By: riastradh
Date: Sun Nov 19 04:13:38 UTC 2023
Modified Files:
src/sys/kern: sys_eventfd.c
Log Message:
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.10 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.10
--- src/sys/kern/sys_eventfd.c:1.9 Thu Feb 17 16:28:29 2022
+++ src/sys/kern/sys_eventfd.c Sun Nov 19 04:13:37 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.10 2023/11/19 04:13:37 riastradh 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.10 2023/11/19 04:13:37 riastradh 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);