Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1569480
| 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 |
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
[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