Merge 3.0-rc2 + Linus's latest into usb-linus
[pandora-kernel.git] / tools / perf / util / evsel.c
index ee0fe0d..0239eb8 100644 (file)
 
 #define FD(e, x, y) (*(int *)xyarray__entry(e->fd, x, y))
 
+int __perf_evsel__sample_size(u64 sample_type)
+{
+       u64 mask = sample_type & PERF_SAMPLE_MASK;
+       int size = 0;
+       int i;
+
+       for (i = 0; i < 64; i++) {
+               if (mask & (1ULL << i))
+                       size++;
+       }
+
+       size *= sizeof(u64);
+
+       return size;
+}
+
 void perf_evsel__init(struct perf_evsel *evsel,
                      struct perf_event_attr *attr, int idx)
 {
@@ -35,7 +51,17 @@ struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr, int idx)
 
 int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads)
 {
+       int cpu, thread;
        evsel->fd = xyarray__new(ncpus, nthreads, sizeof(int));
+
+       if (evsel->fd) {
+               for (cpu = 0; cpu < ncpus; cpu++) {
+                       for (thread = 0; thread < nthreads; thread++) {
+                               FD(evsel, cpu, thread) = -1;
+                       }
+               }
+       }
+
        return evsel->fd != NULL ? 0 : -ENOMEM;
 }