perf_counter: add PERF_RECORD_CPU
[safe/jmp/linux-2.6] / kernel / perf_counter.c
index c615f52..d850a1f 100644 (file)
@@ -1956,6 +1956,9 @@ static void perf_counter_output(struct perf_counter *counter,
        struct perf_callchain_entry *callchain = NULL;
        int callchain_size = 0;
        u64 time;
+       struct {
+               u32 cpu, reserved;
+       } cpu_entry;
 
        header.type = 0;
        header.size = sizeof(header);
@@ -1999,6 +2002,13 @@ static void perf_counter_output(struct perf_counter *counter,
                header.size += sizeof(u64);
        }
 
+       if (record_type & PERF_RECORD_CPU) {
+               header.type |= PERF_RECORD_CPU;
+               header.size += sizeof(cpu_entry);
+
+               cpu_entry.cpu = raw_smp_processor_id();
+       }
+
        if (record_type & PERF_RECORD_GROUP) {
                header.type |= PERF_RECORD_GROUP;
                header.size += sizeof(u64) +
@@ -2037,6 +2047,9 @@ static void perf_counter_output(struct perf_counter *counter,
        if (record_type & PERF_RECORD_CONFIG)
                perf_output_put(&handle, counter->hw_event.config);
 
+       if (record_type & PERF_RECORD_CPU)
+               perf_output_put(&handle, cpu_entry);
+
        /*
         * XXX PERF_RECORD_GROUP vs inherited counters seems difficult.
         */