From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_2 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC2D6C433E7 for ; Mon, 12 Oct 2020 14:00:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BE7682080D for ; Mon, 12 Oct 2020 14:00:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390747AbgJLOAY (ORCPT ); Mon, 12 Oct 2020 10:00:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:38438 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389424AbgJLN77 (ORCPT ); Mon, 12 Oct 2020 09:59:59 -0400 Received: from gandalf.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6A0252076E; Mon, 12 Oct 2020 13:59:57 +0000 (UTC) Date: Mon, 12 Oct 2020 09:59:55 -0400 From: Steven Rostedt To: Rob Clark Cc: linux-kernel@vger.kernel.org, Rob Clark , Ingo Molnar , "Peter Zijlstra (Intel)" , Phil Auld , Valentin Schneider , Thara Gopinath , Randy Dunlap , Vincent Donnefort , Mel Gorman , Andrew Morton , Jens Axboe , Marcelo Tosatti , Frederic Weisbecker , Ilias Stamatis , Liang Chen , Ben Dooks , Peter Zijlstra , "J. Bruce Fields" Subject: Re: [PATCH] kthread: Add kthread_work tracepoints Message-ID: <20201012095955.0741313b@gandalf.local.home> In-Reply-To: <20201010180323.126634-1-robdclark@gmail.com> References: <20201010180323.126634-1-robdclark@gmail.com> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 10 Oct 2020 11:03:22 -0700 Rob Clark wrote: > /** > + * sched_kthread_work_execute_start - called immediately before the work callback > + * @work: pointer to struct kthread_work > + * > + * Allows to track kthread work execution. > + */ > +TRACE_EVENT(sched_kthread_work_execute_start, > + > + TP_PROTO(struct kthread_work *work), > + > + TP_ARGS(work), > + > + TP_STRUCT__entry( > + __field( void *, work ) > + __field( void *, function) > + ), > + > + TP_fast_assign( > + __entry->work = work; > + __entry->function = work->func; > + ), > + > + TP_printk("work struct %p: function %ps", __entry->work, __entry->function) > +); > + > +/** > + * sched_kthread_work_execute_end - called immediately after the work callback > + * @work: pointer to struct work_struct > + * @function: pointer to worker function > + * > + * Allows to track workqueue execution. > + */ > +TRACE_EVENT(sched_kthread_work_execute_end, > + > + TP_PROTO(struct kthread_work *work, kthread_work_func_t function), > + > + TP_ARGS(work, function), > + > + TP_STRUCT__entry( > + __field( void *, work ) > + __field( void *, function) > + ), > + > + TP_fast_assign( > + __entry->work = work; > + __entry->function = function; > + ), > + > + TP_printk("work struct %p: function %ps", __entry->work, __entry->function) > +); > + Please combine the above into: DECLARE_EVENT_CLASS(sched_kthread_work_execute_template, TP_PROTO(struct kthread_work *work), TP_ARGS(work), TP_STRUCT__entry( __field( void *, work ) __field( void *, function) ), TP_fast_assign( __entry->work = work; __entry->function = work->func; ), TP_printk("work struct %p: function %ps", __entry->work, __entry->function) ); DEFINE_EVENT(sched_kthread_work_execute_template, sched_kthread_work_execute_start, TP_PROTO(struct kthread_work *work), TP_ARGS(work)); DEFINE_EVENT(sched_kthread_work_execute_template, sched_kthread_work_execute_end, TP_PROTO(struct kthread_work *work), TP_ARGS(work)); As events are cheap, classes are expensive (size wise), and a TRACE_EVENT() is really just a CLASS and EVENT for a single instance. -- Steve