From nobody Sat Oct 18 05:14:12 2025 X-Original-To: dev-commits-src-main@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 4cpVGr4VNJz6CQ5y; Sat, 18 Oct 2025 05:14:12 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cpVGr1jK5z3V0b; Sat, 18 Oct 2025 05:14:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1760764452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Pb0csVxPLx1PlFa967Y8P/LJIrN1le3swjixE9lLr0Q=; b=rvFvXARyx8kolvIiJwoX68UXV5vha41/p0JA5ckdEnbmDQNUBL+FDURefCtEzPkghaXVou N6MVXZgTwyWV29rTzaWB3RuAYt9x1u+voH5moW0xwcePOJWOPru/Wpmpm1CzcqwwHt/N2e c5+fVL4rpw/UbiAPCbhkm/K5BaoWWqNqmB+P7DGIFj3bog+MqqqANQ2NExe7qDgOMjOZ3p vSBdTO93kDANsgPipJEB2hxgVGOuTyX6/PwerDRFcCAz+lIFS5onC7MjCNcm6KeM7ibSwj gA4KjM4pETCL8kB12AxwvqF7L7qEKCJroOF+PyaAhWKMEcSa4u7SOs9XYs2usQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1760764452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Pb0csVxPLx1PlFa967Y8P/LJIrN1le3swjixE9lLr0Q=; b=iGFJvL8T9OygGnozCluUyyItLjDDMKq/NJOnK7lqtb72uYHTf4cavH6UA/QwXTfzxL3MX3 bJLuGSy8qbkY+uDpYZgZFDqNI7Fh/w/69rwH1BqN+IbdS4rDW+7YYYDSnNZgDB9RcRnKu9 Th18J/NtKjtAzyNUgD7p/k0Qx4cptnLb/PilfuJ0kRR+o1yLFYoapCE7XUwPsPRkYV9wP2 QnSIzE9quqgP/BJaesazhKrn9WCWA9bh8S3b6vnui/qeYgqYA6foYU+8C8k6WYmes0Jh6A ssqNexzHm6dHc1o0/G81JaN8PxRYcbj/EeXY7Ab46HCyDGjiWmIY7X8PzUM0NQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1760764452; a=rsa-sha256; cv=none; b=s2gO8zVAtM8xCBvRWfBRC1HBINe3Z6vWHdfxKqowX6hZMr8mTLfIjjLv9h4Bq/yFn0jMB7 A4qg16AgyDJt151jKqXrTgPqEVf4n+Rr94JXbmAMXo8Og3T2eI+DsAubU2p/qdds+eGG/M 47lxz/cme8z4sjgeh7FfqkluyqLmN2B8BfDQebFkElfxPzIv0y03CE/+IFjJGINU6HO/0j V8ZzQ4nh2hmzlu56L3irdjABoklbl/UBWqk3a200xEeHy9bIg9K/uL7UuQjFcNeRLs2cGY ld/ghXdHZxG6tUEjLyyxLaNy+22G0H5GSmbyUCh4nFO+FyqqLwRHRNvzvAjmJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cpVGr0wBvzBpQ; Sat, 18 Oct 2025 05:14:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59I5ECub062366; Sat, 18 Oct 2025 05:14:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59I5EC1R062363; Sat, 18 Oct 2025 05:14:12 GMT (envelope-from git) Date: Sat, 18 Oct 2025 05:14:12 GMT Message-Id: <202510180514.59I5EC1R062363@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 78382caa3edb - main - kern/kern_event.c: extract kern_kqueue_alloc() from kern_kqueue() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 78382caa3edbea4c3d3aad2b47ff9db3d77fc978 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=78382caa3edbea4c3d3aad2b47ff9db3d77fc978 commit 78382caa3edbea4c3d3aad2b47ff9db3d77fc978 Author: Konstantin Belousov AuthorDate: 2025-08-19 04:32:43 +0000 Commit: Konstantin Belousov CommitDate: 2025-10-18 05:12:36 +0000 kern/kern_event.c: extract kern_kqueue_alloc() from kern_kqueue() The new helper function allows to allocate a kqueue and its file, without also allocating file descriptor. Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D52045 --- sys/kern/kern_event.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 57b6b75cb848..5435f9702d06 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -1177,28 +1177,28 @@ kqueue_init(struct kqueue *kq) TASK_INIT(&kq->kq_task, 0, kqueue_task, kq); } -int -kern_kqueue(struct thread *td, int flags, struct filecaps *fcaps) +static int +kern_kqueue_alloc(struct thread *td, struct filedesc *fdp, int *fdip, + struct file **fpp, int flags, struct filecaps *fcaps, + struct kqueue **kqp) { - struct filedesc *fdp; - struct kqueue *kq; - struct file *fp; struct ucred *cred; - int fd, error; + struct kqueue *kq; + int error; - fdp = td->td_proc->p_fd; cred = td->td_ucred; if (!chgkqcnt(cred->cr_ruidinfo, 1, lim_cur(td, RLIMIT_KQUEUES))) return (ENOMEM); - error = falloc_caps(td, &fp, &fd, flags, fcaps); + error = fdip != NULL ? falloc_caps(td, fpp, fdip, flags, fcaps) : + _falloc_noinstall(td, fpp, 2); if (error != 0) { chgkqcnt(cred->cr_ruidinfo, -1, 0); return (error); } /* An extra reference on `fp' has been held for us by falloc(). */ - kq = malloc(sizeof *kq, M_KQUEUE, M_WAITOK | M_ZERO); + kq = malloc(sizeof(*kq), M_KQUEUE, M_WAITOK | M_ZERO); kqueue_init(kq); kq->kq_fdp = fdp; kq->kq_cred = crhold(cred); @@ -1207,6 +1207,22 @@ kern_kqueue(struct thread *td, int flags, struct filecaps *fcaps) TAILQ_INSERT_HEAD(&fdp->fd_kqlist, kq, kq_list); FILEDESC_XUNLOCK(fdp); + *kqp = kq; + return (0); +} + +int +kern_kqueue(struct thread *td, int flags, struct filecaps *fcaps) +{ + struct kqueue *kq; + struct file *fp; + int fd, error; + + error = kern_kqueue_alloc(td, td->td_proc->p_fd, &fd, &fp, flags, + fcaps, &kq); + if (error != 0) + return (error); + finit(fp, FREAD | FWRITE, DTYPE_KQUEUE, kq, &kqueueops); fdrop(fp, td);