|
|
@@ -170,6 +170,12 @@ static bool name_in_tp_list(char *sys, struct tracepoint_path *tps)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+#define for_each_event(dir, dent, tps) \
|
|
|
+ while ((dent = readdir(dir))) \
|
|
|
+ if (dent->d_type == DT_DIR && \
|
|
|
+ (strcmp(dent->d_name, ".")) && \
|
|
|
+ (strcmp(dent->d_name, ".."))) \
|
|
|
+
|
|
|
static int copy_event_system(const char *sys, struct tracepoint_path *tps)
|
|
|
{
|
|
|
struct dirent *dent;
|
|
|
@@ -186,12 +192,10 @@ 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))
|
|
|
+ for_each_event(dir, dent, tps) {
|
|
|
+ if (!name_in_tp_list(dent->d_name, tps))
|
|
|
continue;
|
|
|
+
|
|
|
if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
|
|
|
err = -ENOMEM;
|
|
|
goto out;
|
|
|
@@ -210,12 +214,10 @@ 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))
|
|
|
+ for_each_event(dir, dent, tps) {
|
|
|
+ if (!name_in_tp_list(dent->d_name, tps))
|
|
|
continue;
|
|
|
+
|
|
|
if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
|
|
|
err = -ENOMEM;
|
|
|
goto out;
|
|
|
@@ -290,13 +292,11 @@ static int record_event_files(struct tracepoint_path *tps)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- while ((dent = readdir(dir))) {
|
|
|
- if (dent->d_type != DT_DIR ||
|
|
|
- strcmp(dent->d_name, ".") == 0 ||
|
|
|
- strcmp(dent->d_name, "..") == 0 ||
|
|
|
- strcmp(dent->d_name, "ftrace") == 0 ||
|
|
|
+ for_each_event(dir, dent, tps) {
|
|
|
+ if (strcmp(dent->d_name, "ftrace") == 0 ||
|
|
|
!system_in_tp_list(dent->d_name, tps))
|
|
|
continue;
|
|
|
+
|
|
|
count++;
|
|
|
}
|
|
|
|
|
|
@@ -307,13 +307,11 @@ static int record_event_files(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 ||
|
|
|
- strcmp(dent->d_name, "ftrace") == 0 ||
|
|
|
+ for_each_event(dir, dent, tps) {
|
|
|
+ if (strcmp(dent->d_name, "ftrace") == 0 ||
|
|
|
!system_in_tp_list(dent->d_name, tps))
|
|
|
continue;
|
|
|
+
|
|
|
if (asprintf(&sys, "%s/%s", path, dent->d_name) < 0) {
|
|
|
err = -ENOMEM;
|
|
|
goto out;
|