Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 182327
b: refs/heads/master
c: 659d8cf
h: refs/heads/master
i:
  182325: 161f02d
  182323: 536b54d
  182319: 06c1854
v: v3
  • Loading branch information
Ulrich Drepper authored and Ingo Molnar committed Dec 28, 2009
1 parent e2948c6 commit e656eda
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fd2a50a0240f5f5b59070474eabd83a85720a406
refs/heads/master: 659d8cfbb225f1fa5a4f8671a847ef3ab5a89660
17 changes: 6 additions & 11 deletions trunk/tools/perf/builtin-kmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,23 +92,18 @@ static void setup_cpunode_map(void)
if (!dir1)
return;

while (true) {
dent1 = readdir(dir1);
if (!dent1)
break;

if (sscanf(dent1->d_name, "node%u", &mem) < 1)
while ((dent1 = readdir(dir1)) != NULL) {
if (dent1->d_type != DT_DIR ||
sscanf(dent1->d_name, "node%u", &mem) < 1)
continue;

snprintf(buf, PATH_MAX, "%s/%s", PATH_SYS_NODE, dent1->d_name);
dir2 = opendir(buf);
if (!dir2)
continue;
while (true) {
dent2 = readdir(dir2);
if (!dent2)
break;
if (sscanf(dent2->d_name, "cpu%u", &cpu) < 1)
while ((dent2 = readdir(dir2)) != NULL) {
if (dent2->d_type != DT_LNK ||
sscanf(dent2->d_name, "cpu%u", &cpu) < 1)
continue;
cpunode_map[cpu] = mem;
}
Expand Down
50 changes: 23 additions & 27 deletions trunk/tools/perf/util/trace-event-info.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
#define _GNU_SOURCE
#include <dirent.h>
#include <mntent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Expand Down Expand Up @@ -103,28 +104,28 @@ static const char *find_debugfs(void)
{
static char debugfs[MAX_PATH+1];
static int debugfs_found;
char type[100];
FILE *fp;
struct mntent *m;

if (debugfs_found)
return debugfs;

if ((fp = fopen("/proc/mounts","r")) == NULL)
fp = setmntent("/proc/mounts", "r");
if (!fp)
die("Can't open /proc/mounts for read");

while (fscanf(fp, "%*s %"
STR(MAX_PATH)
"s %99s %*s %*d %*d\n",
debugfs, type) == 2) {
if (strcmp(type, "debugfs") == 0)
while ((m = getmntent(fp)) != NULL) {
if (strcmp(m->mnt_type, "debugfs") == 0) {
strcpy(debugfs, m->mnt_dir);
debugfs_found = 1;
break;
}
}
fclose(fp);

if (strcmp(type, "debugfs") != 0)
die("debugfs not mounted, please mount");
endmntent(fp);

debugfs_found = 1;
if (!debugfs_found)
die("debugfs not mounted, please mount");

return debugfs;
}
Expand Down Expand Up @@ -317,7 +318,8 @@ static void copy_event_system(const char *sys, struct tracepoint_path *tps)
die("can't read directory '%s'", sys);

while ((dent = readdir(dir))) {
if (strcmp(dent->d_name, ".") == 0 ||
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;
Expand All @@ -334,7 +336,8 @@ static void copy_event_system(const char *sys, struct tracepoint_path *tps)

rewinddir(dir);
while ((dent = readdir(dir))) {
if (strcmp(dent->d_name, ".") == 0 ||
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;
Expand Down Expand Up @@ -394,26 +397,21 @@ static void read_event_files(struct tracepoint_path *tps)
die("can't read directory '%s'", path);

while ((dent = readdir(dir))) {
if (strcmp(dent->d_name, ".") == 0 ||
if (dent->d_type != DT_DIR ||
strcmp(dent->d_name, ".") == 0 ||
strcmp(dent->d_name, "..") == 0 ||
strcmp(dent->d_name, "ftrace") == 0 ||
!system_in_tp_list(dent->d_name, tps))
continue;
sys = malloc_or_die(strlen(path) + strlen(dent->d_name) + 2);
sprintf(sys, "%s/%s", path, dent->d_name);
ret = stat(sys, &st);
free(sys);
if (ret < 0)
continue;
if (S_ISDIR(st.st_mode))
count++;
count++;
}

write_or_die(&count, 4);

rewinddir(dir);
while ((dent = readdir(dir))) {
if (strcmp(dent->d_name, ".") == 0 ||
if (dent->d_type != DT_DIR ||
strcmp(dent->d_name, ".") == 0 ||
strcmp(dent->d_name, "..") == 0 ||
strcmp(dent->d_name, "ftrace") == 0 ||
!system_in_tp_list(dent->d_name, tps))
Expand All @@ -422,10 +420,8 @@ static void read_event_files(struct tracepoint_path *tps)
sprintf(sys, "%s/%s", path, dent->d_name);
ret = stat(sys, &st);
if (ret >= 0) {
if (S_ISDIR(st.st_mode)) {
write_or_die(dent->d_name, strlen(dent->d_name) + 1);
copy_event_system(sys, tps);
}
write_or_die(dent->d_name, strlen(dent->d_name) + 1);
copy_event_system(sys, tps);
}
free(sys);
}
Expand Down

0 comments on commit e656eda

Please sign in to comment.