From 3e4921b92dbf40a5e8412539898f22b6eacc3816 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Mon, 1 Feb 2010 14:02:41 -0500 Subject: [PATCH] Unconditionally fall back to software if opening hardware counters fails 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 | 13 +++++-------- 1 file 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) -- 2.7.4