From nobody Thu Aug 7 09:51:44 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 4byMrJ3g0Yz6443h; Thu, 07 Aug 2025 09:51:44 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byMrJ2kvmz3YtN; Thu, 07 Aug 2025 09:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560304; 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=WhOdyuYVdvhLcXSqrkxORJIT1SA9zBOcPLgor1hecbo=; b=l7/kXrwoPbYC64qvh+tlaYKnem4AoAArj/UErOCrLPmHLfLvbDlLc5Nb4x3v7/fFt5OZeJ uK4EYmgWFb+ZTx8wCl+uh2dNJYDe3um3GAXeY+dtRzTPbzBrVAoi9dGYtZk+2ha6VctX3k 8P5MUtpr8H+YSGL+dJwy+KZ177d+E6p0YNPpHqIoVc9Mn1lGrjID7lue6qKSrLJYw7b3W2 0HxP1xbF0ereX8MAB8L7x5bsdagPHPzKTX3A1MmOa2rIg4i4qdjXObwD6V/j1f6KyrXl43 gBpcnSy3OpLg8jRQ5AKZGGdOEcjFhjiPJDEIc+nBUdXwJ69ELcBg/hZcjg+OLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560304; 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=WhOdyuYVdvhLcXSqrkxORJIT1SA9zBOcPLgor1hecbo=; b=hdvKXDwqcIhdP8ke3NJaLCA62iFCHRnYqECHNWGUnu9DxIHQmXGFPNi2jXw/7/pGnbT0kY eSrRNyvnU+KDMkArUzuM+RwtncQ7sFxJ1FyKzC96TSh8WIcSgkqUz6esLhbQqFFLoJ/jOT ytnAY+tRyCiEH09LT9pPpjnZcu98roKeY3FBM0M3YZqUGnyRI/GjyyHZ+qGkGyX+U2nWJk 2ZpwIcnnHIJt/WH61myFdLgnYnF5cAmQUOCEC1CwYT70ALFX9QJyVq4dWSORLqNQoZJc1M lj2C6YZZ6lYMWv+p0jHrxk+PnQtkqiT/J8Q72H+7fORiWrgpQ1tJXb/J88sGPQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754560304; a=rsa-sha256; cv=none; b=rvzx23QjvNHnsqjGYr4o9vfFw2vQ4fcXwbCSLafYM7M2/q5HalqoIthXOKqzPRp4zf/nOQ wxG+9Hr1d8rCKl6hp1YDa1wj6obKQVL3HRiupAYd1gyqBSBpwoKBqWegEDg4Ltw3l2F98k n0oxwZ4yvCnV0msFZ0SJonP2per7b8vx4X52xRe7z+DfywlJHZmgzNQXW3p45sOCT4B6YX 692lRpcUWcXl7SICxRDyrLc8Terq+9CHXV7QsZ3TJLXxWIqYH7o5XIiyD7vIa3W0On99dJ iIGgDo6wUSYLEZLpZs8crHDfWjAg3/a81kT/jNCy1X/4wqDMjOGtnqEKKQMKXw== 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 4byMrJ2Gv1z11qp; Thu, 07 Aug 2025 09:51:44 +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 5779piff017841; Thu, 7 Aug 2025 09:51:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5779pi8s017838; Thu, 7 Aug 2025 09:51:44 GMT (envelope-from git) Date: Thu, 7 Aug 2025 09:51:44 GMT Message-Id: <202508070951.5779pi8s017838@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 9274eb16e5da - main - cpuset: Add CPU_TEST_{SET,CLR}_ATOMIC 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: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9274eb16e5da1bd048237cd82366c7db9162aafe Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=9274eb16e5da1bd048237cd82366c7db9162aafe commit 9274eb16e5da1bd048237cd82366c7db9162aafe Author: Andrew Turner AuthorDate: 2025-08-07 09:23:34 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 09:45:15 +0000 cpuset: Add CPU_TEST_{SET,CLR}_ATOMIC These are similar to CPU_{SET,CLR}_ATOMIC with the addition of returning true if the CPU bit was set before the change. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51765 --- share/man/man9/cpuset.9 | 14 +++++++++++++- sys/sys/cpuset.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/share/man/man9/cpuset.9 b/share/man/man9/cpuset.9 index 20485059a4c8..0ca04f921f82 100644 --- a/share/man/man9/cpuset.9 +++ b/share/man/man9/cpuset.9 @@ -22,7 +22,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd September 23, 2022 +.Dd August 7, 2025 .Dt CPUSET 9 .Os .Sh NAME @@ -50,8 +50,10 @@ .Nm CPU_ANDNOT , .Nm CPU_XOR , .Nm CPU_CLR_ATOMIC , +.Nm CPU_TEST_CLR_ATOMIC , .Nm CPU_SET_ATOMIC , .Nm CPU_SET_ATOMIC_ACQ , +.Nm CPU_TEST_SET_ATOMIC , .Nm CPU_AND_ATOMIC , .Nm CPU_OR_ATOMIC , .Nm CPU_COPY_STORE_REL @@ -93,8 +95,10 @@ .Fn CPU_XOR "cpuset_t *dst" "cpuset_t *src1" "cpuset_t *src2" .\" .Fn CPU_CLR_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" +.Fn CPU_TEST_CLR_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .Fn CPU_SET_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .Fn CPU_SET_ATOMIC_ACQ "size_t cpu_idx" "cpuset_t *cpuset" +.Fn CPU_TEST_SET_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .\" .Fn CPU_AND_ATOMIC "cpuset_t *dst" "cpuset_t *src" .Fn CPU_OR_ATOMIC "cpuset_t *dst" "cpuset_t *src" @@ -143,6 +147,10 @@ The .Fn CPU_CLR_ATOMIC macro is identical, but the bit representing the CPU is cleared with atomic machine instructions. +The +.Fn CPU_TEST_CLR_ATOMIC +macro atomically clears the bit representing the CPU and returns whether it +was set. .Pp The .Fn CPU_COPY @@ -176,6 +184,10 @@ machine instructions. The .Fn CPU_SET_ATOMIC_ACQ macro sets the bit representing the CPU with atomic acquire semantics. +The +.Fn CPU_TEST_SET_ATOMIC +macro atomically sets the bit representing the CPU and returns whether it was +set. .Pp The .Fn CPU_ISSET diff --git a/sys/sys/cpuset.h b/sys/sys/cpuset.h index b036b45da283..e861321586db 100644 --- a/sys/sys/cpuset.h +++ b/sys/sys/cpuset.h @@ -61,8 +61,10 @@ #define CPU_ANDNOT(d, s1, s2) __BIT_ANDNOT2(CPU_SETSIZE, d, s1, s2) #define CPU_XOR(d, s1, s2) __BIT_XOR2(CPU_SETSIZE, d, s1, s2) #define CPU_CLR_ATOMIC(n, p) __BIT_CLR_ATOMIC(CPU_SETSIZE, n, p) +#define CPU_TEST_CLR_ATOMIC(n, p) __BIT_TEST_CLR_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC(n, p) __BIT_SET_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC_ACQ(n, p) __BIT_SET_ATOMIC_ACQ(CPU_SETSIZE, n, p) +#define CPU_TEST_SET_ATOMIC(n, p) __BIT_TEST_SET_ATOMIC(CPU_SETSIZE, n, p) #define CPU_AND_ATOMIC(n, p) __BIT_AND_ATOMIC(CPU_SETSIZE, n, p) #define CPU_OR_ATOMIC(d, s) __BIT_OR_ATOMIC(CPU_SETSIZE, d, s) #define CPU_COPY_STORE_REL(f, t) __BIT_COPY_STORE_REL(CPU_SETSIZE, f, t)