summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@daimi.au.dk>2010-02-01 14:02:41 -0500
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>2010-02-01 14:02:41 -0500
commit3e4921b92dbf40a5e8412539898f22b6eacc3816 (patch)
tree3e5130e060d9e26341781475c9967165f0adb4aa
parent16f11912e2d7a575e952ce35b014297054a65b9b (diff)
Unconditionally fall back to software if opening hardware counters failssw
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.
-rw-r--r--collector.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/collector.c b/collector.c
index 6f5abe2..b39fbc0 100644
--- a/collector.c
+++ b/collector.c
@@ -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)