From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jin Yao <yao.jin@linux.intel.com>
Cc: jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v4 01/12] perf util: Create rblist__reset() function
Date: Thu, 30 Nov 2017 16:30:22 -0300 [thread overview]
Message-ID: <20171130193022.GT3298@kernel.org> (raw)
In-Reply-To: <1512043002-26099-2-git-send-email-yao.jin@linux.intel.com>
Em Thu, Nov 30, 2017 at 07:56:31PM +0800, Jin Yao escreveu:
> Currently we have a rblist__delete() which is used to delete a rblist.
> While rblist__delete() will free the pointer of rblist at the end.
>
> It's inconvenience for user to delete a rblist which is not allocated
> by something like malloc(). For example, the rblist is defined in a
> data structure.
> This patch creates a new function rblist__reset() which function is
> similar as rblist__delete() but it will not free the rblist.
So, we've been using, mostly consistently:
int foo__init(struct foo *foo)
{
foo->a = 1;
foo->b = malloc(10);
if (foo->b == NULL)
return -1;
return 0;
}
struct foo *foo__new(parameters)
{
struct foo *foo = zalloc(sizeof(*foo));
if (foo && foo__init(foo))
goto out_delete;
return foo;
out_delete:
foo__delete(foo);
return NULL);
}
void foo__exit(struct foo *foo)
{
zfree(&foo->b);
}
void foo__delete(struct foo *foo)
{
if (!foo)
return;
foo__exit(foo);
free(foo);
}
So, please use delete+exit and new+init, i.e. replace 'reset' with
'exit' and 'free' with 'delete' (I saw this case in another patch), for
us to try and make all this more consistent, ok?
Thanks,
- Arnaldo
> Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
> ---
> tools/perf/util/rblist.c | 24 +++++++++++++++++-------
> tools/perf/util/rblist.h | 1 +
> 2 files changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/tools/perf/util/rblist.c b/tools/perf/util/rblist.c
> index 0dfe27d..eafa663 100644
> --- a/tools/perf/util/rblist.c
> +++ b/tools/perf/util/rblist.c
> @@ -101,20 +101,30 @@ void rblist__init(struct rblist *rblist)
> return;
> }
>
> +static void remove_nodes(struct rblist *rblist)
> +{
> + struct rb_node *pos, *next = rb_first(&rblist->entries);
> +
> + while (next) {
> + pos = next;
> + next = rb_next(pos);
> + rblist__remove_node(rblist, pos);
> + }
> +}
> +
> void rblist__delete(struct rblist *rblist)
> {
> if (rblist != NULL) {
> - struct rb_node *pos, *next = rb_first(&rblist->entries);
> -
> - while (next) {
> - pos = next;
> - next = rb_next(pos);
> - rblist__remove_node(rblist, pos);
> - }
> + remove_nodes(rblist);
> free(rblist);
> }
> }
>
> +void rblist__reset(struct rblist *rblist)
> +{
> + remove_nodes(rblist);
> +}
> +
> struct rb_node *rblist__entry(const struct rblist *rblist, unsigned int idx)
> {
> struct rb_node *node;
> diff --git a/tools/perf/util/rblist.h b/tools/perf/util/rblist.h
> index 4c8638a..048c285 100644
> --- a/tools/perf/util/rblist.h
> +++ b/tools/perf/util/rblist.h
> @@ -35,6 +35,7 @@ void rblist__remove_node(struct rblist *rblist, struct rb_node *rb_node);
> struct rb_node *rblist__find(struct rblist *rblist, const void *entry);
> struct rb_node *rblist__findnew(struct rblist *rblist, const void *entry);
> struct rb_node *rblist__entry(const struct rblist *rblist, unsigned int idx);
> +void rblist__reset(struct rblist *rblist);
>
> static inline bool rblist__empty(const struct rblist *rblist)
> {
> --
> 2.7.4
next prev parent reply other threads:[~2017-11-30 19:30 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-30 11:56 [PATCH v4 00/12] perf stat: Enable '--per-thread' on all thread Jin Yao
2017-11-30 10:05 ` Jiri Olsa
2017-12-01 0:24 ` Jin, Yao
2017-11-30 11:56 ` [PATCH v4 01/12] perf util: Create rblist__reset() function Jin Yao
2017-11-30 19:30 ` Arnaldo Carvalho de Melo [this message]
2017-12-01 0:22 ` Jin, Yao
2017-11-30 11:56 ` [PATCH v4 02/12] perf util: Define a structure for runtime shadow stats Jin Yao
2017-11-30 11:56 ` [PATCH v4 03/12] perf util: Extend rbtree to support " Jin Yao
2017-11-30 11:56 ` [PATCH v4 04/12] perf util: Add rbtree node_delete ops Jin Yao
2017-11-30 11:56 ` [PATCH v4 05/12] perf util: Create the runtime_stat init/free function Jin Yao
2017-11-30 11:56 ` [PATCH v4 06/12] perf util: Update and print per-thread shadow stats Jin Yao
2017-11-30 11:56 ` [PATCH v4 07/12] perf util: Remove a set of shadow stats static variables Jin Yao
2017-11-30 11:56 ` [PATCH v4 08/12] perf stat: Allocate shadow stats buffer for threads Jin Yao
2017-11-30 11:56 ` [PATCH v4 09/12] perf stat: Update or print per-thread stats Jin Yao
2017-11-30 11:56 ` [PATCH v4 10/12] perf util: Reuse thread_map__new_by_uid to enumerate threads from /proc Jin Yao
2017-11-30 11:56 ` [PATCH v4 11/12] perf stat: Remove --per-thread pid/tid limitation Jin Yao
2017-11-30 11:56 ` [PATCH v4 12/12] perf stat: Resort '--per-thread' result Jin Yao
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=20171130193022.GT3298@kernel.org \
--to=acme@kernel.org \
--cc=Linux-kernel@vger.kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.com \
--cc=yao.jin@linux.intel.com \
/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.