From nobody Tue Jun 24 22:25:06 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 4bRfdt5JfRz60LsR; Tue, 24 Jun 2025 22:25:06 +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 4bRfdt2ysCz41JN; Tue, 24 Jun 2025 22:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750803906; 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=PgcToHRJ8PzJzIytGV6qvjDd1+H/1RsQGvRsBwi4r7M=; b=N+0lEDrZVo1GRVUsmTm22JZaPKqujUUrrxmaALkzxIREUjhTG+GNSLA5gDLj1hER3g76Mg 1NDkCuQQnwtnBpo0qTyKygzOHpkwnAWN+pvwgW2gSZNB4/GIIb8ehYdkdMlM3Wid6Bjya9 wkwUW3EvDaNxJLN4bgGsrFFwTZQySXfwn2Vl7ppZKHorNxGQQVv6mxhl26fbzgrRohaop+ uO0aIyy7EAChXHuSr6qyCKUwyP+yqOGG/CI7x/L98znbOUqCUtEVne3b+BYJwlsghSpqqF dcmX5Za0Pu1jtPNg84h6bhLlxL1fRp3rH0s/c2TVf78QlCvSFdTySgUdHyBBbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750803906; 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=PgcToHRJ8PzJzIytGV6qvjDd1+H/1RsQGvRsBwi4r7M=; b=Ot3Lk3idZSSoCh7se52Velk0Tf0g6EFFPF2UjR48+R/pG3LeiLwvhqsSkYqSihan7S8UT2 tqifKwL3ft18WtTuM6Kq90Jw9MtzAksX72ingwRiRp4lQRFX2DRmzBAZwg/ryYsgnjdbRD mxQTbPRVMzQZIf5oGWG25EfLsnj90AZgW3OdSysyBMl7ceYvvniIS4CU/w4Vkw5lUpR4/p 2c83qyEAyzPHx4xk7QP+41hC+njYwZkXdm/3tDNqifJfoFPOwKr2URZbj5F7F/UM4BOs1O ty/7sZvZ31T4KPTfxA6EQDCtjGoseG7WKt2pPJwixRBlj/zbD0Ke97F0MUlXJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1750803906; a=rsa-sha256; cv=none; b=sbT9jLGuluS11F3nEJBKJhv8Pv1QXovep0LvdnNHq1hSTrFr8J/Kwgc9fKgKYFJu/0XVSS EhhjajQLf+9KaPYOyz3WD7u/znArWRnrzQUpyvnKB1aBzW8rIqHhvhLThy+XMCrWn23uuA zJBIK50TSexBOwdy+H6W+213AlsLqeqbxdbfynICM/Rf6Oq7KiZ3nfQdcqaNH9bYx1XJQ2 /5yQTbX6tnWPVvQoAtd7SHg7SRf17SpR8pOztOJYAXRgnMndK6SfFu+mPkUihqezrxnNoy 2c8Gs7ntjTb3j3X97JTMai/5C/FeKvfFoyaFeMlbGCAkfLb3kKIheQmXFXd99Q== 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 4bRfdt2ZZLz15nb; Tue, 24 Jun 2025 22:25:06 +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 55OMP6jE036089; Tue, 24 Jun 2025 22:25:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55OMP6G3036086; Tue, 24 Jun 2025 22:25:06 GMT (envelope-from git) Date: Tue, 24 Jun 2025 22:25:06 GMT Message-Id: <202506242225.55OMP6G3036086@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: eabb9f600001 - main - gone_in: enforce printing only once 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: eabb9f600001cc19943965b84d492936a5c59ebd Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=eabb9f600001cc19943965b84d492936a5c59ebd commit eabb9f600001cc19943965b84d492936a5c59ebd Author: Gleb Smirnoff AuthorDate: 2025-06-24 22:23:53 +0000 Commit: Gleb Smirnoff CommitDate: 2025-06-24 22:23:53 +0000 gone_in: enforce printing only once This allows to use this KPI not only in device attach methods, but also for syscalls and code that can be called multiple times at machine runtime. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D50784 --- sys/sys/systm.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 7a6edaef2cb8..c4e0aafac452 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -576,10 +576,22 @@ void _gone_in_dev(device_t dev, int major, const char *msg, ...) #else #define __gone_ok(m, msg) #endif -#define gone_in(major, msg, ...) __gone_ok(major, msg) \ - _gone_in(major, msg __VA_OPT__(,) __VA_ARGS__) -#define gone_in_dev(dev, major, msg, ...) __gone_ok(major, msg) \ - _gone_in_dev(dev, major, msg __VA_OPT__(,) __VA_ARGS__) +#define gone_in(major, msg, ...) do { \ + static bool __read_mostly __gone_in_ ## __LINE__ = true; \ + __gone_ok(major, msg); \ + if (__predict_false(__gone_in_ ## __LINE__)) { \ + __gone_in_ ## __LINE__ = false; \ + _gone_in(major, msg __VA_OPT__(,) __VA_ARGS__); \ + } \ +} while (0) +#define gone_in_dev(dev, major, msg, ...) do { \ + static bool __read_mostly __gone_in_ ## __LINE__ = true; \ + __gone_ok(major, msg); \ + if (__predict_false(__gone_in_ ## __LINE__)) { \ + __gone_in_ ## __LINE__ = false; \ + _gone_in_dev(dev, major, msg __VA_OPT__(,) __VA_ARGS__);\ + } \ +} while (0) #ifdef INVARIANTS #define __diagused