From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oa2-f12.google.com (mail-oa2-f12.google.com [74.125.231.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D3E959220E for ; Wed, 23 Sep 2026 22:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.231.76 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790202967; cv=none; b=YtxyMwAfLgVK+97zs745xV37kCwB+yHASVu3IxOjbUGBi1XJ+8pbDPRgivRx4ByWskVPJvCGagoGrw/xT8Koi9VyZTWyLgUo57+Kv+ce2QkshwS+Az9jKfNRnbrwlsjvW7ravt90Ii4Jmg5C14qXNRWe52GIku10VfJJvN4rSCU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790202967; c=relaxed/simple; bh=dVCVMamiUaB96gu4NX1kujuPDVFnoxAGuPP2zSXDqA4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NXoJC30ozOj1k074BpRahq6YJpx2kxCDr4aleeT5VN0g2415GN6ztBURmjKXH5mSlk0Lla3Jg4C6SZXZNKTGVS0sr9fXNdx3wXv9zcrDKOOLFfZU6C/D2wDo4tgSqIRjbXvjLfCE+zeWWCMxkSK4bwOjeScNFzfkCy0OF5kYimo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=la/DfI6Q; arc=none smtp.client-ip=74.125.231.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="la/DfI6Q" Received: by mail-oa2-f12.google.com with SMTP id 586e51a60fabf-469fdb78b1cso826094fac.0 for ; Wed, 23 Sep 2026 15:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790202961; x=1790807761; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=anf0fctja+VnMMprL/dVwONTSp+dELUQq5LW/V5rUuo=; b=la/DfI6QTd1+YOGuL+x1fIC7Dgmsg/bE2W10m+JNaRhlluQESJ62SUM2g8/ZtswlVS jbU9PrNEqmve437AfB11EyE3pDakQRMtUgE9aT5EXdgqh/d/4fxV5wEG87Y3MpMOjEEQ PbFemXLDbiAInawrxLg2QIrm7FrQH4+sC1IvsyhjQEGuNlQkAa18vcbhkIUg4CPEhhKg 3yJigbhiOuv/OLpMPWkhZdJrkGkgRb5+t0dcH42LFr56OE10bW80kFaNjLlsB7B4L6ND llm+NTVRKe/nIfzE3J6GbdBprMjc64WrCQwznzfu5+9OqiakRmf9Ui8OqDjDHadvqWfO /5Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790202961; x=1790807761; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=anf0fctja+VnMMprL/dVwONTSp+dELUQq5LW/V5rUuo=; b=xs3QS4pksj4FQ5kGkke4bfNW1vh2vvvqz4XpK29IRbYZCnEWiYaLwkQlGXOwJyAnpH lSV4g1LzyM7hO9PM4HqUCPeTltr7x7X7p2QRhsFaaA/arGFR8NGTsF7ZPmD+L4Z0kRUP 8U2jWiPuuRYL2UFBSCwI713gY2wo3TSg65MdP9C2yvIPCydo6/XpnAdQ8ux93oHsTttC Rm8obDHzlNpI7aquBbo2rWYc5z6OJtqMytCItv2vOPJmjA/ZzzT2Na67svb3nQbAd288 DNtvYrcNFhlbjW20dRJCbheoBPdH/5pr7SQScKMbSlVAyi0BR3TQ9MKHqmjsO+FEaW8Q 0uSQ== X-Forwarded-Encrypted: i=1; AKwUvBzYXzm5+yQaV8ZVM5Ja+dx36M1x2ublgqFndxl6C2dqml/fbSiecCCfyk8GI3ZGhxQpk9sa8V8QsocYUstk@vger.kernel.org X-Gm-Message-State: AFuF++lk4bB1iJD9hfblh9uDFcEyBXmzfhKm0DKJ+m/szWWthdirJQ4x 8O54PCB03ogUB+1DkKiC5fBoodC/WdlIibgkeWOViAfdLY+TDpzwQLpE X-Gm-Gg: AYBFou28vxSV2KIHI89bmYcksAgDhfr+mB359DdhWcak+sLWJ5cErdl8Mcn8hIl5CCg iTrsiyPdxG//R5yeuIsoO6dOl9LCkfWjp3PkSbF6oaFg5q2f2BSBa35QM0zCbGiRFhkIfQZ+gJl CSyiEtpzwryFygKytiY+J3ygcwUrUdCWewcqbse4FujbTrHDhJ3TXdhKi7y4W3pOIasEdkP8mqt ExGSYIez60SbHGMylyoCGOcCFpKrl8vSsgAeI3kr1W4N5IeGAGviph6TxXrXW0iaj2beHyMMvl2 Zik+bJ91pbYSCnc9e4PAD05Br5tUnJ8iZrVbhd64nIBaNYShK5wnmE03yVAhtawZQmrnw72fGm3 RhZswv8sGBWU9hHNGfNTBBuwyU55h+a41U/LpubrehEGlxkdidzBJrtgxzh5Q8is4x6FuCpqayR BtvTkX6kHk9zBFfJL1IbvggeT0IQM+cpRqGi9X48PmPRxVlBVjZPbleCvs4Yw31QLL0CkJSmUkA KZpMIFtSf/2TtnKpzR2dm3DmOGpxNfHFDiursyAm3Jx0K+RhO2vjCQGKzs81A5Nc7DWpDFr5n1n EJf8JuZVlBT3oepQTzi2 X-Received: by 2002:a05:6870:3912:b0:491:2ed8:3505 with SMTP id 586e51a60fabf-491e2441c2dmr772232fac.0.1790202961310; Wed, 23 Sep 2026 15:36:01 -0700 (PDT) Received: from [100.82.231.29] (c-98-38-17-99.hsd1.co.comcast.net. [98.38.17.99]) by smtp.googlemail.com with ESMTPSA id 586e51a60fabf-491ee1ac486sm559401fac.16.2026.09.23.15.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Sep 2026 15:36:00 -0700 (PDT) From: Jim Cromie Date: Wed, 23 Sep 2026 16:35:00 -0600 Subject: [PATCH v11 36/38] dyndbg: add epilogue to dynamic_debug/control file Precedence: bulk X-Mailing-List: linux-modules@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260923-dd-cmap-part2-clean-v11-36-9b6c217fdf2f@gmail.com> References: <20260923-dd-cmap-part2-clean-v11-0-9b6c217fdf2f@gmail.com> In-Reply-To: <20260923-dd-cmap-part2-clean-v11-0-9b6c217fdf2f@gmail.com> To: Jason Baron , Shuah Khan , Andrew Morton , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Arnd Bergmann , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , Aaron Tomlin , Jonathan Corbet , Greg Kroah-Hartman , Nathan Chancellor , Nicolas Schier , Shuah Khan , Randy Dunlap , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Jonathan Corbet , Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arch@vger.kernel.org, linux-modules@vger.kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-pm@vger.kernel.org, Jim Cromie X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790202874; l=2252; i=jim.cromie@gmail.com; s=20260203; h=from:subject:message-id; bh=dVCVMamiUaB96gu4NX1kujuPDVFnoxAGuPP2zSXDqA4=; b=xv600zdesEVIz3KiAGz67sw1u76JqgY26LqYwDj3pdMjhveZMs8ss+XJ/RmWb/HveYQerfo24 I624GaaLxTQDvfT/Qvyw8uAGdpUY3zCzVd1BxwZnYRc7XkVEOPjCSdX X-Developer-Key: i=jim.cromie@gmail.com; a=ed25519; pk=C6E5ODlPQo7ZBynATXH9wg7K6HxP0pIXyf4s38Qw0XE= Add an epilogue to the control-file, to allow display of statistics etc, without disturbing the header. NB: epilogue lines should start with "#: " to distinguish them from lines describing pr_debugs (and from the header line). No new lines are added here, only the place to do so. Signed-off-by: Jim Cromie --- v9: . update ddebug_proc_start() to return EPILOGUE_TOKEN when seeking directly to epilogue. --- lib/dynamic_debug.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 098fd2639cb6..88440c1f6abb 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1186,6 +1186,9 @@ static struct _ddebug *ddebug_iter_next(struct ddebug_iter *iter) * read() call from userspace. Takes the ddebug_lock and * seeks the seq_file's iterator to the given position. */ +static char ddebug_epilogue_token; +#define EPILOGUE_TOKEN (&ddebug_epilogue_token) + static void *ddebug_proc_start(struct seq_file *m, loff_t *pos) { struct ddebug_iter *iter = m->private; @@ -1201,7 +1204,9 @@ static void *ddebug_proc_start(struct seq_file *m, loff_t *pos) dp = ddebug_iter_first(iter); while (dp != NULL && --n > 0) dp = ddebug_iter_next(iter); - return dp; + if (dp) + return dp; + return n <= 1 ? EPILOGUE_TOKEN : NULL; } /* @@ -1214,12 +1219,20 @@ static void *ddebug_proc_next(struct seq_file *m, void *p, loff_t *pos) struct ddebug_iter *iter = m->private; struct _ddebug *dp; + (*pos)++; + + if (p == EPILOGUE_TOKEN) + return NULL; + if (p == SEQ_START_TOKEN) dp = ddebug_iter_first(iter); else dp = ddebug_iter_next(iter); - ++*pos; - return dp; + + if (dp) + return dp; + + return EPILOGUE_TOKEN; } static bool ddebug_class_map_in_range(const int class_id, const struct ddebug_class_map *map) @@ -1271,6 +1284,10 @@ static int ddebug_proc_show(struct seq_file *m, void *p) "# filename:lineno [module]function flags format\n"); return 0; } + if (p == EPILOGUE_TOKEN) { + /* use this soon */ + return 0; + } seq_printf(m, "%s:%u [%s]%s =%s \"", trim_prefix(dp->filename), dp->lineno, -- 2.55.0