From: Jiri Olsa <jolsa@redhat.com>
To: Wang YanQing <udknight@gmail.com>,
acme@kernel.org, peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH] tools/lib/traceevent/event-parse: delete pevent_register_function
Date: Mon, 15 Jan 2018 11:08:34 +0100 [thread overview]
Message-ID: <20180115100834.GC14646@krava> (raw)
In-Reply-To: <20180115045014.GC20373@udknight>
On Mon, Jan 15, 2018 at 12:50:14PM +0800, Wang YanQing wrote:
> After commit 4263cece22e3da94f16fbbcf71ce3807946d3ef3
> ("perf tools: Stop reading the kallsyms data from perf.data"),
> there is no users of pevent_register_function in tree, so we
> could just delete it.
>
I don't think you can remove this function,
perf is not the only user there
adding Steven to the loop
jirka
> Signed-off-by: Wang YanQing <udknight@gmail.com>
> ---
> tools/lib/traceevent/event-parse.c | 183 +------------------------------------
> tools/lib/traceevent/event-parse.h | 3 -
> 2 files changed, 1 insertion(+), 185 deletions(-)
>
> diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
> index 7ce724f..0d125a3 100644
> --- a/tools/lib/traceevent/event-parse.c
> +++ b/tools/lib/traceevent/event-parse.c
> @@ -347,96 +347,6 @@ struct func_list {
> char *mod;
> };
>
> -static int func_cmp(const void *a, const void *b)
> -{
> - const struct func_map *fa = a;
> - const struct func_map *fb = b;
> -
> - if (fa->addr < fb->addr)
> - return -1;
> - if (fa->addr > fb->addr)
> - return 1;
> -
> - return 0;
> -}
> -
> -/*
> - * We are searching for a record in between, not an exact
> - * match.
> - */
> -static int func_bcmp(const void *a, const void *b)
> -{
> - const struct func_map *fa = a;
> - const struct func_map *fb = b;
> -
> - if ((fa->addr == fb->addr) ||
> -
> - (fa->addr > fb->addr &&
> - fa->addr < (fb+1)->addr))
> - return 0;
> -
> - if (fa->addr < fb->addr)
> - return -1;
> -
> - return 1;
> -}
> -
> -static int func_map_init(struct pevent *pevent)
> -{
> - struct func_list *funclist;
> - struct func_list *item;
> - struct func_map *func_map;
> - int i;
> -
> - func_map = malloc(sizeof(*func_map) * (pevent->func_count + 1));
> - if (!func_map)
> - return -1;
> -
> - funclist = pevent->funclist;
> -
> - i = 0;
> - while (funclist) {
> - func_map[i].func = funclist->func;
> - func_map[i].addr = funclist->addr;
> - func_map[i].mod = funclist->mod;
> - i++;
> - item = funclist;
> - funclist = funclist->next;
> - free(item);
> - }
> -
> - qsort(func_map, pevent->func_count, sizeof(*func_map), func_cmp);
> -
> - /*
> - * Add a special record at the end.
> - */
> - func_map[pevent->func_count].func = NULL;
> - func_map[pevent->func_count].addr = 0;
> - func_map[pevent->func_count].mod = NULL;
> -
> - pevent->func_map = func_map;
> - pevent->funclist = NULL;
> -
> - return 0;
> -}
> -
> -static struct func_map *
> -__find_func(struct pevent *pevent, unsigned long long addr)
> -{
> - struct func_map *func;
> - struct func_map key;
> -
> - if (!pevent->func_map)
> - func_map_init(pevent);
> -
> - key.addr = addr;
> -
> - func = bsearch(&key, pevent->func_map, pevent->func_count,
> - sizeof(*pevent->func_map), func_bcmp);
> -
> - return func;
> -}
> -
> struct func_resolver {
> pevent_func_resolver_t *func;
> void *priv;
> @@ -448,10 +358,6 @@ struct func_resolver {
> * @pevent: handle for the pevent
> * @resolver: function to be used
> * @priv: resolver function private state.
> - *
> - * Some tools may have already a way to resolve kernel functions, allow them to
> - * keep using it instead of duplicating all the entries inside
> - * pevent->funclist.
> */
> int pevent_set_function_resolver(struct pevent *pevent,
> pevent_func_resolver_t *func, void *priv)
> @@ -489,7 +395,7 @@ void pevent_reset_function_resolver(struct pevent *pevent)
> struct func_map *map;
>
> if (!pevent->func_resolver)
> - return __find_func(pevent, addr);
> + return NULL;
>
> map = &pevent->func_resolver->map;
> map->mod = NULL;
> @@ -543,75 +449,6 @@ const char *pevent_find_function(struct pevent *pevent, unsigned long long addr)
> return map->addr;
> }
>
> -/**
> - * pevent_register_function - register a function with a given address
> - * @pevent: handle for the pevent
> - * @function: the function name to register
> - * @addr: the address the function starts at
> - * @mod: the kernel module the function may be in (NULL for none)
> - *
> - * This registers a function name with an address and module.
> - * The @func passed in is duplicated.
> - */
> -int pevent_register_function(struct pevent *pevent, char *func,
> - unsigned long long addr, char *mod)
> -{
> - struct func_list *item = malloc(sizeof(*item));
> -
> - if (!item)
> - return -1;
> -
> - item->next = pevent->funclist;
> - item->func = strdup(func);
> - if (!item->func)
> - goto out_free;
> -
> - if (mod) {
> - item->mod = strdup(mod);
> - if (!item->mod)
> - goto out_free_func;
> - } else
> - item->mod = NULL;
> - item->addr = addr;
> -
> - pevent->funclist = item;
> - pevent->func_count++;
> -
> - return 0;
> -
> -out_free_func:
> - free(item->func);
> - item->func = NULL;
> -out_free:
> - free(item);
> - errno = ENOMEM;
> - return -1;
> -}
> -
> -/**
> - * pevent_print_funcs - print out the stored functions
> - * @pevent: handle for the pevent
> - *
> - * This prints out the stored functions.
> - */
> -void pevent_print_funcs(struct pevent *pevent)
> -{
> - int i;
> -
> - if (!pevent->func_map)
> - func_map_init(pevent);
> -
> - for (i = 0; i < (int)pevent->func_count; i++) {
> - printf("%016llx %s",
> - pevent->func_map[i].addr,
> - pevent->func_map[i].func);
> - if (pevent->func_map[i].mod)
> - printf(" [%s]\n", pevent->func_map[i].mod);
> - else
> - printf("\n");
> - }
> -}
> -
> struct printk_map {
> unsigned long long addr;
> char *printk;
> @@ -6777,7 +6614,6 @@ void pevent_free_format(struct event_format *event)
> void pevent_free(struct pevent *pevent)
> {
> struct cmdline_list *cmdlist, *cmdnext;
> - struct func_list *funclist, *funcnext;
> struct printk_list *printklist, *printknext;
> struct pevent_function_handler *func_handler;
> struct event_handler *handle;
> @@ -6787,7 +6623,6 @@ void pevent_free(struct pevent *pevent)
> return;
>
> cmdlist = pevent->cmdlist;
> - funclist = pevent->funclist;
> printklist = pevent->printklist;
>
> pevent->ref_count--;
> @@ -6807,22 +6642,6 @@ void pevent_free(struct pevent *pevent)
> cmdlist = cmdnext;
> }
>
> - if (pevent->func_map) {
> - for (i = 0; i < (int)pevent->func_count; i++) {
> - free(pevent->func_map[i].func);
> - free(pevent->func_map[i].mod);
> - }
> - free(pevent->func_map);
> - }
> -
> - while (funclist) {
> - funcnext = funclist->next;
> - free(funclist->func);
> - free(funclist->mod);
> - free(funclist);
> - funclist = funcnext;
> - }
> -
> while (pevent->func_handlers) {
> func_handler = pevent->func_handlers;
> pevent->func_handlers = func_handler->next;
> diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
> index 0c03538..af7a693 100644
> --- a/tools/lib/traceevent/event-parse.h
> +++ b/tools/lib/traceevent/event-parse.h
> @@ -483,10 +483,7 @@ struct pevent {
> struct cmdline_list *cmdlist;
> int cmdline_count;
>
> - struct func_map *func_map;
> struct func_resolver *func_resolver;
> - struct func_list *funclist;
> - unsigned int func_count;
>
> struct printk_map *printk_map;
> struct printk_list *printklist;
> --
> 1.8.5.6.2.g3d8a54e.dirty
next prev parent reply other threads:[~2018-01-15 10:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-15 4:50 [PATCH] tools/lib/traceevent/event-parse: delete pevent_register_function Wang YanQing
2018-01-15 10:08 ` Jiri Olsa [this message]
2018-01-15 11:54 ` Steven Rostedt
2018-01-15 13:13 ` 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=20180115100834.GC14646@krava \
--to=jolsa@redhat.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=udknight@gmail.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.