Unconditionally fall back to software if opening hardware counters fails
authorSøren Sandmann Pedersen <sandmann@daimi.au.dk>
Mon, 1 Feb 2010 19:02:41 +0000 (14:02 -0500)
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>
Mon, 1 Feb 2010 19:02:41 +0000 (14:02 -0500)
If hardware counters are not available, fall back to SW regardless of
why the hardware counters aren't available. The error code can be
either ENOTSUPP or ENODEV depending on CPU type, so it's simpler to
just retry in all cases, and only fail if the software fallback
failed.

collector.c

index 6f5abe2..b39fbc0 100644 (file)
@@ -360,14 +360,11 @@ counter_new (Collector  *collector,
     
     if ((fd = sysprof_perf_counter_open (&attr, -1, cpu, -1,  0)) < 0)
     {
-       if (errno == ENODEV)
-       {
-           attr.type = PERF_TYPE_SOFTWARE;
-           attr.config = PERF_COUNT_SW_CPU_CLOCK;
-           attr.sample_period = 1000000;
-
-           fd = sysprof_perf_counter_open (&attr, -1, cpu, -1, 0);
-       }
+       attr.type = PERF_TYPE_SOFTWARE;
+       attr.config = PERF_COUNT_SW_CPU_CLOCK;
+       attr.sample_period = 1000000;
+       
+       fd = sysprof_perf_counter_open (&attr, -1, cpu, -1, 0);
     }
     
     if (fd < 0)