From patchwork Wed Feb 8 01:56:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54139 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3197659wrn; Tue, 7 Feb 2023 18:02:22 -0800 (PST) X-Google-Smtp-Source: AK7set+67AAeVNWGJH5T4saZuGR77nMtJ9lm1I+MzlocJ24kX+V+v8xeRRANU81CU25x5AzR5r1f X-Received: by 2002:a50:d6de:0:b0:4aa:bae3:f4bd with SMTP id l30-20020a50d6de000000b004aabae3f4bdmr5456925edj.25.1675821742685; Tue, 07 Feb 2023 18:02:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821742; cv=none; d=google.com; s=arc-20160816; b=xY+pjQwwVmXSP87U1ziUObX6XEWCLAcPQ2BAHC1T7GadzBs+OSx27/4iOTWWLwjuYZ RYhFmFvaDFt3bZy675bxIphDpvASCUS4VSYQ08kZZMDjLJ5PcwQrTy1KVwXFV4ZnM3x/ 8QW5ocDJK63EmfBDcnA2GOwsbgTRQVE3jPcDcMjajUhsBns1PufI3Jwy2qVhVxiKwVUb 1f5H7HgN0imUkkjyo0We1B5MF0iarzHN/TeTI2tStqBC7qsFQDvfdtB/S1ybA6a+Ft47 UqH5xC+Pa50XjxqZkCjWFkk/U+IndrRdHUvABXZyqUwagaHG0EoQIX32WYZH+lRncfsC OlCQ== 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=85snBGah9UWBr59sHwuQ10+6mnZ3qY/FOHPbWh5oqfg=; b=YWbMoFnpI7iDgxKtGcgP6Abbgtdut7R1x+7mXqsNjRV1WvubwTqXDRY91OUg2nhM4h XphCGjzO5U+nv5d24EWWQUcG/kJBDgzn4MvGXbmbGoboEuoiYQtXkDXhLchQA6adQB9s mYPIsnSC74SE2nREJNTKmfHwOmJcfNeszSIOhIl2KVEyvGvDFSQ6gFbCNeIp9iCcETKD rUlMZM5LfDPxWfYXydAHy1nVN4ksRq5KJlcphqvGxVNpkXuvA+9Qe3a6ptLLOPX8sMy0 nNqUBe2tOYhh3MLU8y42BUUwXruV+ZIjKBy289e00IZXsOHT8riAOAvuzA+q/lnKBlO2 HRVw== 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 c23-20020a056402121700b004aab13261d7si10209044edw.16.2023.02.07.18.01.59; Tue, 07 Feb 2023 18:02:22 -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 S230020AbjBHB6N (ORCPT + 99 others); Tue, 7 Feb 2023 20:58:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229865AbjBHB5h (ORCPT ); Tue, 7 Feb 2023 20:57:37 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04E433E601 for ; Tue, 7 Feb 2023 17:57:36 -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 A00ECB81BA2 for ; Wed, 8 Feb 2023 01:57:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54AE9C433D2; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiG-006dRX-1X; Tue, 07 Feb 2023 20:57:32 -0500 Message-ID: <20230208015732.290763896@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:43 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Ross Zwisler Subject: [for-next][PATCH 10/11] tracing: Add trace_array_puts() to write into instance References: <20230208015633.791198913@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?1757226459583218576?= X-GMAIL-MSGID: =?utf-8?q?1757226459583218576?= 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(). Link: https://lkml.kernel.org/r/20230207173026.584717290@goodmis.org Cc: Masami Hiramatsu Cc: Andrew Morton Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- 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); /**