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


Groups > linux.kernel > #1569480

Re: [PATCH] perf tools: Create for_each_event{_system, _file} macros for tracepoints iteration

From Jiri Olsa <jolsa@redhat.com>
Newsgroups linux.kernel
Subject Re: [PATCH] perf tools: Create for_each_event{_system, _file} macros for tracepoints iteration
Date 2017-01-30 10:10 +0100
Message-ID <t5g8i-28g-19@gated-at.bofh.it> (permalink)
References <t5fFf-1Jp-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, Jan 30, 2017 at 05:35:28PM +0900, Taeung Song wrote:

SNIP

> +#define for_each_event_system(dir, dent, tps)			\
> +	while ((dent = readdir(dir)))				\
> +		if (dent->d_type == DT_DIR &&			\
> +		    (strcmp(dent->d_name, ".")) &&		\
> +		    (strcmp(dent->d_name, "..")) &&		\
> +		    (name_in_tp_list(dent->d_name, tps)))
> +
>  static int copy_event_system(const char *sys, struct tracepoint_path *tps)
>  {
>  	struct dirent *dent;
> @@ -186,12 +193,7 @@ static int copy_event_system(const char *sys, struct tracepoint_path *tps)
>  		return -errno;
>  	}
>  
> -	while ((dent = readdir(dir))) {
> -		if (dent->d_type != DT_DIR ||
> -		    strcmp(dent->d_name, ".") == 0 ||
> -		    strcmp(dent->d_name, "..") == 0 ||
> -		    !name_in_tp_list(dent->d_name, tps))
> -			continue;
> +	for_each_event_system(dir, dent, tps) {
>  		if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
>  			err = -ENOMEM;
>  			goto out;
> @@ -210,12 +212,7 @@ static int copy_event_system(const char *sys, struct tracepoint_path *tps)
>  	}
>  
>  	rewinddir(dir);
> -	while ((dent = readdir(dir))) {
> -		if (dent->d_type != DT_DIR ||
> -		    strcmp(dent->d_name, ".") == 0 ||
> -		    strcmp(dent->d_name, "..") == 0 ||
> -		    !name_in_tp_list(dent->d_name, tps))
> -			continue;
> +	for_each_event_system(dir, dent, tps) {
>  		if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
>  			err = -ENOMEM;
>  			goto out;
> @@ -266,6 +263,14 @@ static bool system_in_tp_list(char *sys, struct tracepoint_path *tps)
>  	return false;
>  }
>  
> +#define for_each_event_file(dir, dent, tps)			\
> +	while ((dent = readdir(dir)))				\
> +		if (dent->d_type == DT_DIR &&			\
> +		    (strcmp(dent->d_name, ".")) &&		\
> +		    (strcmp(dent->d_name, "..")) &&		\
> +		    (strcmp(dent->d_name, "ftrace")) &&		\
> +		    (system_in_tp_list(dent->d_name, tps)))

looks almost the same as for_each_event_system macro,
what's the difference other than 'ftrace' check?
also why's one 'file' and the other 'system'? looks
like we coud have just one macro in here

jirka

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


Thread

[PATCH] perf tools: Create for_each_event{_system, _file} macros for tracepoints iteration Taeung Song <treeze.taeung@gmail.com> - 2017-01-30 09:40 +0100
  Re: [PATCH] perf tools: Create for_each_event{_system, _file} macros  for tracepoints iteration Jiri Olsa <jolsa@redhat.com> - 2017-01-30 10:10 +0100
    Re: [PATCH] perf tools: Create for_each_event{_system, _file} macros  for tracepoints iteration Taeung Song <treeze.taeung@gmail.com> - 2017-01-30 11:40 +0100
      Re: [PATCH] perf tools: Create for_each_event{_system, _file} macros  for tracepoints iteration Jiri Olsa <jolsa@redhat.com> - 2017-01-30 13:50 +0100

csiph-web