From patchwork Wed Jan 11 14:56:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 42052 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp3368681wrt; Wed, 11 Jan 2023 07:02:47 -0800 (PST) X-Google-Smtp-Source: AMrXdXtnEvoQ0PL7pwFMLr9c+P7Y3EktWq3jaFDfNq7bgoflT4Ag+512S3KINbfPOJCX6JEdJGmL X-Received: by 2002:a17:906:5fd0:b0:862:11f6:a082 with SMTP id k16-20020a1709065fd000b0086211f6a082mr888716ejv.17.1673449367331; Wed, 11 Jan 2023 07:02:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673449367; cv=none; d=google.com; s=arc-20160816; b=hFrpavOumEQ0IFKQSyb6Nturafzm8k9gvTzku+aGa7IxKuILNwJirdMqKG4EqLdLIX JNBAhRgZExjgsJQwK9tPobyNcx3bAIQL3jIRyCamQVNhQCnMIeOsA1Q0jEzFcuX5L28C xCp6nzYgXh7AyQt7su09FU4eh2Pn1C4opZ9aT/MWpnBT60OklKRTaWZ1FIW/Jo+fRN+I dG+XXwlhC4pr+tqfqhBwY9NS6qGNxiL2BKJVzUqvYb9/CSxYB/ERWuOKdsxwg61zxtou dAfJ+lTU/ZLz7OyQGQLppA33vyNlSAPokOUqNo7BCnFKDgqghgLZZrZLzxIdIsOKHkHh ACtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=BR/Xi9KNee5BIPcJIdmjF/5m9sUEnjDIeLORPMEtJjE=; b=SYZ81RYWZOuoBP5cknSovZcLcIGW2jhohMouHt89mFG4KKwlgqTzfu2yIxLWUYBe36 QF4IdRJ46SaDjt5gunjrJrrHysqpAGtFnJxPPKsIQW/ERvVzxIvLxAkrAlDzBpclEhtn nHSLfzwuGj+tc0gH+IfybHzyI7GAC4LJ53ruOooGHSK40KFZhVTtTu9qiLAnEwTCM62n Qt9o/RURln56lzWWugfpo9WxHvoVbgAgPKeF/82J9SMs/9GGN00Z0zGb5KWXuOlcdARY 2J8JauCVbQgaM952u+FlzZU22Ak9WSg4h4mNrGz/45SxflXbxho8mJGThHk1ZTloWkX3 wDeQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gs15-20020a1709072d0f00b008310ae17418si17399164ejc.594.2023.01.11.07.02.20; Wed, 11 Jan 2023 07:02:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234394AbjAKO7L (ORCPT + 99 others); Wed, 11 Jan 2023 09:59:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239532AbjAKO6r (ORCPT ); Wed, 11 Jan 2023 09:58:47 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 636B9D4A; Wed, 11 Jan 2023 06:58:46 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 1D181B81C11; Wed, 11 Jan 2023 14:58:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCFC4C43398; Wed, 11 Jan 2023 14:58:43 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pFcYs-000M89-2f; Wed, 11 Jan 2023 09:58:42 -0500 Message-ID: <20230111145842.694147820@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 11 Jan 2023 09:56:39 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Ross Zwisler Subject: [PATCH 3/4] tracing: Add trace_array_puts() to write into instance References: <20230111145636.450953217@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754738844029464818?= X-GMAIL-MSGID: =?utf-8?q?1754738844029464818?= From: "Steven Rostedt (Google)" Add a generic trace_array_puts() that can be used to "trace_puts()" into an allocated trace_array instance. This is just another variant of trace_array_printk(). Signed-off-by: Steven Rostedt (Google) Reviewed-by: Ross Zwisler --- include/linux/trace.h | 13 +++++++++++++ kernel/trace/trace.c | 27 +++++++++++++++++---------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/include/linux/trace.h b/include/linux/trace.h index 80ffda871749..afe61949e83a 100644 --- a/include/linux/trace.h +++ b/include/linux/trace.h @@ -33,6 +33,19 @@ struct trace_array; int register_ftrace_export(struct trace_export *export); int unregister_ftrace_export(struct trace_export *export); +/** + * trace_array_puts - write a constant string into the trace buffer. + * @tr: The trace array to write to + * @ip: The address of the caller + * @str: The constant string to write + */ +#define trace_array_puts(tr, str) \ + ({ \ + str ? __trace_array_puts(tr, _THIS_IP_, str, strlen(str)) : -1; \ + }) +int __trace_array_puts(struct trace_array *tr, unsigned long ip, + const char *str, int size); + void trace_printk_init_buffers(void); __printf(3, 4) int trace_array_printk(struct trace_array *tr, unsigned long ip, diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index e8c52a8d712e..3cb9bbc0f076 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1024,13 +1024,8 @@ __buffer_unlock_commit(struct trace_buffer *buffer, struct ring_buffer_event *ev ring_buffer_unlock_commit(buffer); } -/** - * __trace_puts - write a constant string into the trace buffer. - * @ip: The address of the caller - * @str: The constant string to write - * @size: The size of the string. - */ -int __trace_puts(unsigned long ip, const char *str, int size) +int __trace_array_puts(struct trace_array *tr, unsigned long ip, + const char *str, int size) { struct ring_buffer_event *event; struct trace_buffer *buffer; @@ -1038,7 +1033,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) unsigned int trace_ctx; int alloc; - if (!(global_trace.trace_flags & TRACE_ITER_PRINTK)) + if (!(tr->trace_flags & TRACE_ITER_PRINTK)) return 0; if (unlikely(tracing_selftest_running || tracing_disabled)) @@ -1047,7 +1042,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) alloc = sizeof(*entry) + size + 2; /* possible \n added */ trace_ctx = tracing_gen_ctx(); - buffer = global_trace.array_buffer.buffer; + buffer = tr->array_buffer.buffer; ring_buffer_nest_start(buffer); event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc, trace_ctx); @@ -1069,11 +1064,23 @@ int __trace_puts(unsigned long ip, const char *str, int size) entry->buf[size] = '\0'; __buffer_unlock_commit(buffer, event); - ftrace_trace_stack(&global_trace, buffer, trace_ctx, 4, NULL); + ftrace_trace_stack(tr, buffer, trace_ctx, 4, NULL); out: ring_buffer_nest_end(buffer); return size; } +EXPORT_SYMBOL_GPL(__trace_array_puts); + +/** + * __trace_puts - write a constant string into the trace buffer. + * @ip: The address of the caller + * @str: The constant string to write + * @size: The size of the string. + */ +int __trace_puts(unsigned long ip, const char *str, int size) +{ + return __trace_array_puts(&global_trace, ip, str, size); +} EXPORT_SYMBOL_GPL(__trace_puts); /**