]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - tools/perf/util/thread.c
perf events: Change perf parameter --pid to process-wide collection instead of thread...
[net-next-2.6.git] / tools / perf / util / thread.c
index fa968312ee7d5c5044e6e186394f1b6d14ca05ab..ea6506234d579c4cf5633aec3bf4e79ecd8e01d4 100644 (file)
@@ -7,6 +7,37 @@
 #include "util.h"
 #include "debug.h"
 
+int find_all_tid(int pid, pid_t ** all_tid)
+{
+       char name[256];
+       int items;
+       struct dirent **namelist = NULL;
+       int ret = 0;
+       int i;
+
+       sprintf(name, "/proc/%d/task", pid);
+       items = scandir(name, &namelist, NULL, NULL);
+       if (items <= 0)
+                return -ENOENT;
+       *all_tid = malloc(sizeof(pid_t) * items);
+       if (!*all_tid) {
+               ret = -ENOMEM;
+               goto failure;
+       }
+
+       for (i = 0; i < items; i++)
+               (*all_tid)[i] = atoi(namelist[i]->d_name);
+
+       ret = items;
+
+failure:
+       for (i=0; i<items; i++)
+               free(namelist[i]);
+       free(namelist);
+
+       return ret;
+}
+
 void map_groups__init(struct map_groups *self)
 {
        int i;
@@ -348,3 +379,4 @@ struct symbol *map_groups__find_symbol(struct map_groups *self,
 
        return NULL;
 }
+