Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1622671

Re: [PATCH v5] Allow user probes on versioned symbols.

From Masami Hiramatsu <mhiramat@kernel.org>
Newsgroups linux.kernel
Subject Re: [PATCH v5] Allow user probes on versioned symbols.
Date 2017-04-13 04:30 +0200
Message-ID <tvCGd-4M2-9@gated-at.bofh.it> (permalink)
References <tvrKO-5EQ-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Hi Paul,

On Wed, 12 Apr 2017 09:41:51 -0500
Paul Clarke <pc@us.ibm.com> wrote:

> @@ -396,8 +407,26 @@ static void symbols__sort_by_name(struct rb_root *symbols,
>   	}
>   }
>   
> +int symbol__match_symbol_name(const char *name, const char *str,
> +	enum symbols_tag_includes includes)
> +{
> +	const char *versioning;
> +
> +	if (includes == SYMBOLS_TAG__INCLUDE_DEFAULT_ONLY &&
> +	    (versioning = strstr(name,"@@"))) {
> +
> +		unsigned int len = strlen(str);
> +		if (len < versioning - name)
> +			len = versioning - name;
> +
> +		return arch__compare_symbol_names_n(name, str, len);
> +	} else
> +		return arch__compare_symbol_names(name, str);
> +}
> +
>   static struct symbol *symbols__find_by_name(struct rb_root *symbols,
> -					    const char *name)
> +					    const char *name,
> +					    unsigned int includes)

Here, you might miss replacing this 'unsigned int' with enum.
(actually, enum is equal to int, not unsigned int)

[SNIP]
> diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
> index 5245d2f..67b017e 100644
> --- a/tools/perf/util/symbol.h
> +++ b/tools/perf/util/symbol.h
> @@ -348,8 +348,19 @@ void arch__sym_update(struct symbol *s, GElf_Sym *sym);
>   #define SYMBOL_A 0
>   #define SYMBOL_B 1
>   
> +int arch__compare_symbol_names(const char *namea, const char *nameb);
> +int arch__compare_symbol_names_n(const char *namea, const char *nameb,
> +				 unsigned int n);
>   int arch__choose_best_symbol(struct symbol *syma, struct symbol *symb);
>   
> +enum symbols_tag_includes {
> +	SYMBOLS_TAG__INCLUDE_NONE,
> +	SYMBOLS_TAG__INCLUDE_DEFAULT_ONLY
> +};

BTW, would we need such 's' for plural and third person singular for type name?
And also, you should use enum type name for prefix so that other developers
easily find the definition of enumeration, e.g.

enum symbol_tag_include {
	SYMBOL_TAG_INCLUDE__NONE = 0,
	SYMBOL_TAG_INCLUDE__DEFAULT_ONLY
};

Thank you,

-- 
Masami Hiramatsu <mhiramat@kernel.org>

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v5] Allow user probes on versioned symbols. Paul Clarke <pc@us.ibm.com> - 2017-04-12 16:50 +0200
  Re: [PATCH v5] Allow user probes on versioned symbols. Masami Hiramatsu <mhiramat@kernel.org> - 2017-04-13 04:30 +0200
    Re: [PATCH v5] Allow user probes on versioned symbols. Paul Clarke <pc@us.ibm.com> - 2017-04-13 17:50 +0200
      Re: [PATCH v5] Allow user probes on versioned symbols. Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-04-13 20:20 +0200

csiph-web