All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>, Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Ian Rogers <irogers@google.com>,
	linux-perf-users@vger.kernel.org, Will Deacon <will@kernel.org>,
	Waiman Long <longman@redhat.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	Davidlohr Bueso <dave@stgolabs.net>
Subject: Re: [PATCH 1/5] perf lock: Add flags field in the lock_stat
Date: Mon, 25 Jul 2022 17:53:46 -0300	[thread overview]
Message-ID: <Yt8C2kuSAJM5LJZf@kernel.org> (raw)
In-Reply-To: <20220725183124.368304-2-namhyung@kernel.org>

Em Mon, Jul 25, 2022 at 11:31:20AM -0700, Namhyung Kim escreveu:
> For lock contention tracepoint analysis, it needs to keep the flags.
> As nr_readlock and nr_trylock fields are not used for it, let's make
> it a union.
> 
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/builtin-lock.c | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
> index 0aae88fdf93a..1de459198b99 100644
> --- a/tools/perf/builtin-lock.c
> +++ b/tools/perf/builtin-lock.c
> @@ -59,7 +59,10 @@ struct lock_stat {
>  	unsigned int		nr_contended;
>  	unsigned int		nr_release;
>  
> -	unsigned int		nr_readlock;
> +	union {
> +		unsigned int	nr_readlock;
> +		unsigned int	flags;
> +	};
>  	unsigned int		nr_trylock;
>  
>  	/* these times are in nano sec. */
> @@ -516,7 +519,7 @@ static struct lock_stat *lock_stat_find(u64 addr)
>  	return NULL;
>  }
>  
> -static struct lock_stat *lock_stat_findnew(u64 addr, const char *name)
> +static struct lock_stat *lock_stat_findnew(u64 addr, const char *name, int flags)
>  {
>  	struct hlist_head *entry = lockhashentry(addr);
>  	struct lock_stat *ret, *new;
> @@ -531,13 +534,13 @@ static struct lock_stat *lock_stat_findnew(u64 addr, const char *name)
>  		goto alloc_failed;
>  
>  	new->addr = addr;
> -	new->name = zalloc(sizeof(char) * strlen(name) + 1);
> +	new->name = strdup(name);
>  	if (!new->name) {
>  		free(new);
>  		goto alloc_failed;
>  	}
>  
> -	strcpy(new->name, name);

I'm applying to speed things up, but please separate such unrelated bits
in another patch next time.

- Arnaldo

> +	new->flags = flags;
>  	new->wait_time_min = ULLONG_MAX;
>  
>  	hlist_add_head(&new->hash_entry, entry);
> @@ -624,7 +627,7 @@ static int report_lock_acquire_event(struct evsel *evsel,
>  	if (show_thread_stats)
>  		addr = sample->tid;
>  
> -	ls = lock_stat_findnew(addr, name);
> +	ls = lock_stat_findnew(addr, name, 0);
>  	if (!ls)
>  		return -ENOMEM;
>  
> @@ -696,7 +699,7 @@ static int report_lock_acquired_event(struct evsel *evsel,
>  	if (show_thread_stats)
>  		addr = sample->tid;
>  
> -	ls = lock_stat_findnew(addr, name);
> +	ls = lock_stat_findnew(addr, name, 0);
>  	if (!ls)
>  		return -ENOMEM;
>  
> @@ -758,7 +761,7 @@ static int report_lock_contended_event(struct evsel *evsel,
>  	if (show_thread_stats)
>  		addr = sample->tid;
>  
> -	ls = lock_stat_findnew(addr, name);
> +	ls = lock_stat_findnew(addr, name, 0);
>  	if (!ls)
>  		return -ENOMEM;
>  
> @@ -813,7 +816,7 @@ static int report_lock_release_event(struct evsel *evsel,
>  	if (show_thread_stats)
>  		addr = sample->tid;
>  
> -	ls = lock_stat_findnew(addr, name);
> +	ls = lock_stat_findnew(addr, name, 0);
>  	if (!ls)
>  		return -ENOMEM;
>  
> @@ -985,11 +988,12 @@ static int report_lock_contention_begin_event(struct evsel *evsel,
>  	if (!ls) {
>  		char buf[128];
>  		const char *caller = buf;
> +		unsigned int flags = evsel__intval(evsel, sample, "flags");
>  
>  		if (lock_contention_caller(evsel, sample, buf, sizeof(buf)) < 0)
>  			caller = "Unknown";
>  
> -		ls = lock_stat_findnew(addr, caller);
> +		ls = lock_stat_findnew(addr, caller, flags);
>  		if (!ls)
>  			return -ENOMEM;
>  	}
> -- 
> 2.37.1.359.gd136c6c3e2-goog

-- 

- Arnaldo

  reply	other threads:[~2022-07-25 20:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25 18:31 [PATCHSET 0/5] perf lock: Add contention subcommand (v2) Namhyung Kim
2022-07-25 18:31 ` [PATCH 1/5] perf lock: Add flags field in the lock_stat Namhyung Kim
2022-07-25 20:53   ` Arnaldo Carvalho de Melo [this message]
2022-07-25 18:31 ` [PATCH 2/5] perf lock: Add lock aggregation enum Namhyung Kim
2022-07-25 18:31 ` [PATCH 3/5] perf lock: Add 'contention' subcommand Namhyung Kim
2022-07-25 18:31 ` [PATCH 4/5] perf lock: Add -k and -F options to " Namhyung Kim
2022-07-25 18:31 ` [PATCH 5/5] perf lock: Support -t option for " Namhyung Kim
2022-07-25 21:01 ` [PATCHSET 0/5] perf lock: Add contention subcommand (v2) Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yt8C2kuSAJM5LJZf@kernel.org \
    --to=acme@kernel.org \
    --cc=boqun.feng@gmail.com \
    --cc=dave@stgolabs.net \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.