From patchwork Tue Feb 7 17:28:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54014 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2979143wrn; Tue, 7 Feb 2023 09:34:18 -0800 (PST) X-Google-Smtp-Source: AK7set8TJ1gpvwOIHSwktiiwHKT9+4Nw2Ozmh17qZmLfsrH7V1T2cTN9iUnUf1JSPwkp00mCbK30 X-Received: by 2002:a05:6a20:9382:b0:bd:c0c:1e74 with SMTP id x2-20020a056a20938200b000bd0c0c1e74mr4932926pzh.5.1675791257918; Tue, 07 Feb 2023 09:34:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675791257; cv=none; d=google.com; s=arc-20160816; b=lgCUpBt6mAtXH3SjAib8/TODmpymYA8icUv0+7zMoS1kL/CSDIC1/Y0rpKifoGeWwF jMN05dWaFQnJCsTV0F10wLwYiWOllzuV1Z/SzqrCGLBYykNUiY8OeXFrkk1ECpWVmmfy 2IMR5DYOhQA6+muAotv+rY1kwlGP92ryIuq9bvVsDPJNls3jnsaBUfWxUpcxeVFSEFQT n4RBTVqDDKVH7upZy6NQX/hMwQoaAfub4oeeuv9wkUIIjJOKiFGfGltHzlPYiG8k7k/x fZIpI735K747haTSycDbvBNzjoX6d22G3j6zJgoBOcjP8dh2KY4OF87yvch8CtPTrFis 4f3w== 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=gvQaqjFkLuRnBmcD+KAXZONVeY7Yes07QqsCg31tPWY=; b=qcc4xc7pbJeO6P6iQ/OXPLeliLziZvUwB0LkUcYyGS0HHJiJ/zOGZdsPqMxt3puygW iKSY6yCS7h/eAidf4TkSogX+bE+8HvLcVb3ihVAVaxC1RxDe/HPDQ9avANSCBUxsVwiV jKoEZlclGJJq3kEIlkCZvWvXRrg3zxFXttEam7rnQLX3k5E8vlBkQmSuFDYDYj2nEFJY las7WRoGxaO1xBbAB4tF4gqYU4a8GyOouznmbryRwFVFyR6QoGPMy4iInFGqqlnQIxrZ a07Spy6Li6R2FzMWkJrtfMsa92Hm2isabF3tblWB5p5W1IQLdwjPLLTgCmeWgQFXzCxj XDgw== 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 r73-20020a632b4c000000b0049f478df3b8si15738990pgr.702.2023.02.07.09.33.34; Tue, 07 Feb 2023 09:34:17 -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 S230048AbjBGRaf (ORCPT + 99 others); Tue, 7 Feb 2023 12:30:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230296AbjBGRad (ORCPT ); Tue, 7 Feb 2023 12:30:33 -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 93BB62196E; Tue, 7 Feb 2023 09:30:30 -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 2C018B81A61; Tue, 7 Feb 2023 17:30:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D9D60C433A7; Tue, 7 Feb 2023 17:30:27 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPRnW-006Rxr-2U; Tue, 07 Feb 2023 12:30:26 -0500 Message-ID: <20230207173026.584717290@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 12:28:52 -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 v2 3/4] tracing: Add trace_array_puts() to write into instance References: <20230207172849.461894073@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,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?1757194494221126081?= X-GMAIL-MSGID: =?utf-8?q?1757194494221126081?= 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(). Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- Changes since v1: https://lkml.kernel.org/r/20230111145842.694147820@goodmis.org - Remove unneeded @ip in kernel-doc (Ross Zwisler) include/linux/trace.h | 12 ++++++++++++ kernel/trace/trace.c | 27 +++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/include/linux/trace.h b/include/linux/trace.h index 80ffda871749..2a70a447184c 100644 --- a/include/linux/trace.h +++ b/include/linux/trace.h @@ -33,6 +33,18 @@ 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 + * @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 5b16af9e7d30..9918bf7441ed 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1023,13 +1023,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; @@ -1037,7 +1032,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)) @@ -1046,7 +1041,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); @@ -1068,11 +1063,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); /**