diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2010-02-01 14:02:41 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2010-02-01 14:02:41 -0500 |
commit | 3e4921b92dbf40a5e8412539898f22b6eacc3816 (patch) | |
tree | 3e5130e060d9e26341781475c9967165f0adb4aa | |
parent | 16f11912e2d7a575e952ce35b014297054a65b9b (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.c | 13 |
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) |