From nobody Wed Apr 22 21:08:23 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g1Bdz5KJ8z6bKvS for ; Wed, 22 Apr 2026 21:08:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g1Bdz3Nsjz3kn9 for ; Wed, 22 Apr 2026 21:08:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776892103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+4GG8L/UwUHA/0MDNuN3c7PfhmBGfcAEGBP8DbHM7sk=; b=TWwGP4KSpVGsCqTglQOoxbqHqY3p3KvOXFmyQKWmVhz5O8E5NsbFNuAAXNAF39Wdm/k2+q oRKzxs8SCVbWLzzpxjqCCBQvroe+eB6MTAiZoicA08Af6wwSxpP5JOxF3QhVp4Dzg9c5lL 6J0jf0+LxF0TxNgiFzAam/ChQIkoOJAdIe+YOuFLyZJJgj+26cOMa3blsywIHtwcDbLCgB oZeio7PK2AJC54MwdtSdgSdFlFd7A6zy6BQtHiTbmrnXZY5ZNNya4+g4z1YFLln+PUoJov zQIdQheFV4vEkoVgFG1UrGS1Omr8EtPdhGq0Wn4bKxsQQyb9YPPlSb14gvs3UA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776892103; a=rsa-sha256; cv=none; b=TVgj1mrLCBVYuRG1Lx99Iy4c5j5A6LQGRg4erep4kG4bP73HPMzVnr6exsAHGwQm2TQKEP 1FFOA35MN0W4WntDfGToa9AlkOD88z3RvLAVQso6wnnxGkES8QwyjJoo1GCOYYz+c9pp/v o+xNIDvlumd3fKCtCvIsDXOwW35ntZ+JUFCkcHmAd7wTv4XgAb051PgOHHSCq0+Y4R/0CK QZHgtzQ1v5RbA4if1/f1ICiKcZmCli8LW58Q3lDIzlgrFQXT1Smyov3jBLE322XxrqzSB0 OlZsOTSDKHuRQFFJfQ9poM7gPoSYag5SLvJcs0yOT7kql5UDfyk1lC1k6XV3Jg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776892103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+4GG8L/UwUHA/0MDNuN3c7PfhmBGfcAEGBP8DbHM7sk=; b=IBx2XCCNuBLC0BziM5R6ySWon3XcZ34Prf0fvuWgGT4S4pBcu/m/QehM33e0FBEw9bzpKS glTzA+WWYDlrHF49EtWqzeQ6z3Lkn4GUPHSLyNjXvAiEykhUU3QwlIO0EGL2up23HRMS5x yHM5fCOEsszKCayRt4s9Du3GH2yZXkDpc/6Bm3no7bvyz4Oj+6DYSVrT9NCtz+5g3YQtBF SHcG887FdMeME6HlXgYULM0g+26punKCZWJLM8iAz/8xZ+m3giXS1V35fbq7Ae65FEg3A7 Qcd83lFJrAGmE5rzQoBmjFdXCHKotYYI8aHQ8ggjYUB3o8S1vPYVAIIiY80hgA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g1Bdz2vhGznWt for ; Wed, 22 Apr 2026 21:08:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27ba6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 22 Apr 2026 21:08:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Jean-=?utf-8?Q?S=C3=A9bast?==?utf-8?Q?ien P=C3=A9?=dron From: Bjoern A. Zeeb Subject: git: 7ec957d66be2 - stable/15 - eventfd: Add eventfd_signal() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7ec957d66be262d2f674671fe32b7658bd71e96d Auto-Submitted: auto-generated Date: Wed, 22 Apr 2026 21:08:23 +0000 Message-Id: <69e938c7.27ba6.4204b52e@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=7ec957d66be262d2f674671fe32b7658bd71e96d commit 7ec957d66be262d2f674671fe32b7658bd71e96d Author: Jean-Sébastien Pédron AuthorDate: 2025-05-26 17:36:49 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-04-22 20:56:58 +0000 eventfd: Add eventfd_signal() The `eventfd_signal()` function is the equivalent to a write to an eventfd file descriptor: it bumps the internal counter and wakes up processes waiting for it. `eventfd_signal()` is meant to be used by kernel drivers. DRM drivers will call it through linuxkpi. Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50850 (cherry picked from commit 28d6ffe37cf928c5b13e0aa34c39c4414a0f09e4) --- sys/kern/sys_eventfd.c | 25 ++++++++++++++++++++++--- sys/sys/eventfd.h | 1 + 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_eventfd.c b/sys/kern/sys_eventfd.c index 433bcb57b2b3..47f1fcc316ec 100644 --- a/sys/kern/sys_eventfd.c +++ b/sys/kern/sys_eventfd.c @@ -157,6 +157,27 @@ eventfd_put(struct eventfd *efd) free(efd, M_EVENTFD); } +static void +eventfd_wakeup(struct eventfd *efd) +{ + KNOTE_LOCKED(&efd->efd_sel.si_note, 0); + selwakeup(&efd->efd_sel); + wakeup(&efd->efd_count); +} + +void +eventfd_signal(struct eventfd *efd) +{ + mtx_lock(&efd->efd_lock); + + if (efd->efd_count < UINT64_MAX) + efd->efd_count++; + + eventfd_wakeup(efd); + + mtx_unlock(&efd->efd_lock); +} + static int eventfd_close(struct file *fp, struct thread *td) { @@ -244,9 +265,7 @@ retry: if (error == 0) { MPASS(UINT64_MAX - efd->efd_count > count); efd->efd_count += count; - KNOTE_LOCKED(&efd->efd_sel.si_note, 0); - selwakeup(&efd->efd_sel); - wakeup(&efd->efd_count); + eventfd_wakeup(efd); } mtx_unlock(&efd->efd_lock); diff --git a/sys/sys/eventfd.h b/sys/sys/eventfd.h index 1f36dbecb92d..1b390feed48e 100644 --- a/sys/sys/eventfd.h +++ b/sys/sys/eventfd.h @@ -44,6 +44,7 @@ int eventfd_create_file(struct thread *td, struct file *fp, uint32_t initval, int flags); struct eventfd *eventfd_get(struct file *fp); void eventfd_put(struct eventfd *efd); +void eventfd_signal(struct eventfd *efd); #else